Pisanie komponentu - jak usunąć właściwości rodzica?

0

Cześć, piszę sobie komponent i natrafiłem na kolejny problem.
Jak usunąć z ObjectInspectora niektóre właściwości rodzica?
Przykładowo nie chcę mieć właściwości Color, chcę to zrobić po swojemu, czyli dodać właściwość Style(z plusikiem) i tam sobie wszystko pozmieniać

0

niestety nie da sie ukryc metod/wlasciwosci rodzica...
jak juz cos zostalo udostepnione to bedzie zawsze widoczne.

mozna soboe z tym poradzic wykozystujac agregacje zamiast dziedziczenia.
a mowiac po polsku wstawic obiekt tej klasy jako prywatne pole i samemu napisac
metody dostepowe do wybranych pol

np

TMojaKontrolka = class(TComponent)
private
  procedure setMojKolor(c: TColor);
  function getMojKolor: TColor
protected
  Shape: TShape;
published
  MojKolor: TColor read getMojKolor write setMojKolor;
end;

procedure TMojaKontrolka.setMojKolor(c: TColor);
begin
  shape.brush.color := c;
end;

function TMojaKontrolka.getMojKolor: TColor;
begin
  result := shape.brush.color;
end;

//dopisane
spotkalem sie jeszcze z takim zwyczajem ze sie pisze jakis komponent
np TMojaKontrolka, a do niego dopisuje sie identyczny komponent TCustomMojaKontrolka,
rozniaca sie od pierwowzoru tym ze wszystkie publiczne i published elementy przenosi sie do
sekcji protected. dzieki temu klasy dziedziczace maja do dostep do wszystkiego co trzeba ale
nic nie jest udostepniane na zewnatrz.
Jednak wymaga to wczesniejszego przygotowania klasy z ktorej chce sie dziedziczyc.

0

sprawdz czy nie da sie przyslonic

http://4programmers.net/Forum/289935#id289935

1 użytkowników online, w tym zalogowanych: 0, gości: 1