Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Änderung der Eigenschaft "Visible" hat keine A

  Alt 24. Aug 2004, 17:26
Zitat von dizzy:
Ein Setzen von Visible:=false ist ja zunächst mal nur eine Änderung einer Variablen. Damit aber eine sichtbare Veränderung eintritt muss zusätzlich noch neugezeichnet werden, und das muss explizit veranlasst werden, da die Zuweisung an die Visible-Eigenschaft dies nicht für dich mit erledigt.
Stop! Das ist so nicht richtig. Wenn die Eigenschaft Visible einer Control gesetzt wird, so wird intern die Methode SetVisible aufgerufen.
Delphi-Quellcode:
procedure TControl.SetVisible(Value: Boolean);
begin
  if FVisible <> Value then
  begin
    VisibleChanging;
    FVisible := Value;
    Perform(CM_VISIBLECHANGED, Ord(Value), 0);
    RequestAlign;
  end;
end;
Diese sendet die Nachricht CM_VISIBLECHANGED (Zeile 7) an sich selbst, welche später durch die Methode CMVisibleChanged abgearbeitet wird.
Delphi-Quellcode:
procedure TControl.CMVisibleChanged(var Message: TMessage);
begin
  if not (csDesigning in ComponentState) or
    (csNoDesignVisible in ControlStyle) then
    InvalidateControl(True, FVisible and (csOpaque in ControlStyle));
end;
Damit zeichnet sich die Control sofort neu (oder halt versteckt sich und sagt den anderen sich neu zu zeichnen).

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat