Wie kann ich von einer Komponente. die ein Abkömmling von z.B
TImage ist, die Eigenschaft Width, Height,… sperren?
DIe Höhe und die Breite werden von der KOmponente selber
berechnet, sollen also vom BEnutzer nicht verändert werden
können. Wie mache ich das?
Hallo Volker,
daß die Properties „Width“ und „Height“ im Objektinspektor erscheinen, kannst Du nicht verhindern. Du kannst es aber so einrichten, daß die Werte sich nicht verändern lassen und das Control bei einer versuchten Größenänderung mit der Maus auf seine intern festgelegte Größe „zurückschnappt“. Dies erreichst Du durch Überschreiben der Methode „SetBounds“.
In Komponentenklassen-Deklaration einfügen (bei „PUBLIC“):
PROCEDURE SetBounds (ALeft, ATop, AWidth, AHeight: INTEGER);
OVERRIDE;
Implementierung von „SetBounds“:
PROCEDURE T???.SetBounds(ALeft, ATop, AWidth, AHeight: INTEGER);
VAR W, H: INTEGER;
begin
AdjustWidthHeight(W, H);
INHERITED SetBounds (ALeft, ATop, W, H)
end;
Die interne Berechnung der Breite und Höhe des Controls geschieht in der Prozedur „AdjustWidthHeight(W, H)“. Sie ist wie folgt definiert:
PROCEDURE T???.AdjustWidthHeight (VAR W: INTEGER; VAR H: INTEGER);
Ein einfaches Beispiel wäre:
PROCEDURE T???.AdjustWidthHeight (VAR W: INTEGER; VAR H: INTEGER);
begin
W := 200;
H := 50
end;
MfG
Martin