Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TControl.Autosize auslesen geht nicht (https://www.delphipraxis.net/88509-tcontrol-autosize-auslesen-geht-nicht.html)

berens 16. Mär 2007 13:58


TControl.Autosize auslesen geht nicht
 
Hi!

AutoSize wird in der Klasse TControl eingeführt. Warum kann ich jetzt die Eigenschaft AutoSize nicht auslesen?
Auch schon die Code-Vervollständigung bietet mir AutoSize nicht an, auch nicht für T(Scrolling)WinControl etc. Es ist aber nicht möglich, die Control als eine weiter abgeleitete Klasse zu casten, da die Objekte ja ziemlich unterschiedlich sein können. Wie lese ich Autosize aus?

Delphi-Quellcode:
procedure RepaintWinControl(_Control: TWinControl);
var
  i: Integer;
begin
  if _Control.InheritsFrom(TWinControl) then begin
    for i := 0 to _Control.ControlCount - 1 do begin
      if _Control.Controls[i].InheritsFrom(TWinControl) then begin
        RepaintWinControl(TWinControl(_Control.Controls[i]));
      end else begin
        if _Control.Controls[i].InheritsFrom(TControl) then begin
          _Control.Controls[i].Invalidate;
        end;
      end;
    end;
    if (_Control as TControl).AUTOSIZE then begin // <-- führt zu Fehler beim Kompilieren
      // irgendwas
    end;
    _Control.Invalidate;
  end;
end;

SirThornberry 16. Mär 2007 14:03

Re: TControl.Autosize auslesen geht nicht
 
es bleibt nur die Möglichkeit des Castens auf eine Klasse wo das Property außerhalb von Protected ist. Und genau das ist auch der Grund warum du nicht auf das Property zugreifen kannst, weil es im published ist.

berens 16. Mär 2007 14:10

Re: TControl.Autosize auslesen geht nicht
 
Das Erklärt einiges.

Lösung (egal ob sauber oder nicht, es funktioniert scheinbar):

Delphi-Quellcode:
type TDummy = class(TWinControl)
  public
    property AutoSize;
  end;

...

    if TDummy(_Control).AutoSize then begin
      // irgendwas
    end;

Danke für die Info!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz