AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigenschaft aller Formulare ändern zur Laufzeit
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenschaft aller Formulare ändern zur Laufzeit

Ein Thema von needatip · begonnen am 29. Mär 2010 · letzter Beitrag vom 29. Mär 2010
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 10:58
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?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 11:50
Hallo,

Ich würde so vorgehen:

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

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#3

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 12:09
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 12:31
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#5

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 13:26
Och, es hört sich alles vielleicht viel/umständlich an, aber isses eigentlich nicht,

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 15:01
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 ? 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Eigenschaft aller Formulare ändern zur Laufzeit

  Alt 29. Mär 2010, 17:31
Zitat von Neutral General:
Ich würde so vorgehen:
Application.Components mit einer Schleife durchlaufen
...
Besser ist Screen.Forms[] mit einer Schleife zu durchlaufen. Der Rest passt soweit.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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