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 Eigenschaft aller Formulare ändern zur Laufzeit (https://www.delphipraxis.net/149749-eigenschaft-aller-formulare-aendern-zur-laufzeit.html)

needatip 29. Mär 2010 10:58


Eigenschaft aller Formulare ändern zur Laufzeit
 
Hallo,

Ich habe bei mir in einem eigenen Formular, von dem alle meine anderen Formulare erben, eine Statusbar.
Kann man während der Laufzeit z.B. einen Text in einer Statusbar ändern, so dass sich das auf alle geerbten Formulare sofort auswirkt?
Ist das mit Frames realisierbar und wenn dann wie?

Neutral General 29. Mär 2010 11:50

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Hallo,

Ich würde so vorgehen:

:arrow: Application.Components mit einer Schleife durchlaufen
:arrow: Gucken ob Application.Components[i] die entsprechende Klasse besitzt/von ihr erbt (=> Der is-Operator)
:arrow: Wenn ja, dann Application.Components[i] auf diese Klasse casten und Statusbar.Text auf den gewünschten Wert setzen

Gruß
Neutral General

himitsu 29. Mär 2010 12:09

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Oder man verpaßt dem Basisformular eine Funktion "ÄndereStatusbarText" geht alle Frames durch, schaut ob die Formulare/Frames von diesem Basisformular abstammen und wenn ja, dann castet man den Frame auf das Basisformular und ruft diese Funktion auf.

Die abgeleiteten Formulare/Frames könnte diese "virtuelle" Prozedur ja überschreiben und darin auf ihre eigene Statusbar weiterleiten.

needatip 29. Mär 2010 12:31

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Das ist mir momentan zu viel Aufwand. Muss mir nochmal Gedanken machen, ob sich das wirklich lohnt.
Ist es auch möglich während der Laufzeit die Farbe des Hauptforms zu ändern, so daß die Erben dann beim Öffnen diese Farbe besitzen?

himitsu 29. Mär 2010 13:26

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Och, es hört sich alles vielleicht viel/umständlich an, aber isses eigentlich nicht,

Zitat:

Zitat von needatip
Ist es auch möglich während der Laufzeit die Farbe des Hauptforms zu ändern, so daß die Erben dann beim Öffnen diese Farbe besitzen?

Vorgehensweise genausie wie beim Ändern des Statustextes.

Ob nun Komponente+Text oder Komponente+Farbe ist ja egal.


Alternativ könnte man eventuell noch die Farbe im Constructor mitgeben.

Hansa 29. Mär 2010 15:01

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Delphi-Quellcode:
TBasisfrm = class(TBasisForm)
...
    procedure FormShow(Sender: TObject); override;
  protected
    farbe : TColor; // in Basisform farbe deklarieren
  end;
Delphi-Quellcode:
procedure TBasisfrm2.FormShow(Sender: TObject);
begin
  inherited;
  Color := farbe;
end;
Mehr ist das nicht, oder doch ? :gruebel: Ich gehe davon aus, dass während des Programmlaufs durch irgendwas die Farbe verändert wird. Ab dann gilt für neu zu öffnende Forms diese Farbe.

shmia 29. Mär 2010 17:31

Re: Eigenschaft aller Formulare ändern zur Laufzeit
 
Zitat:

Zitat von Neutral General
Ich würde so vorgehen:
:arrow: Application.Components mit einer Schleife durchlaufen
...

Besser ist Screen.Forms[] mit einer Schleife zu durchlaufen. Der Rest passt soweit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 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