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 Komponenten in allen Forms ändern (https://www.delphipraxis.net/99998-komponenten-allen-forms-aendern.html)

pstruh 20. Sep 2007 20:06


Komponenten in allen Forms ändern
 
Hallo Zusammen!
Nachdem der Anwender Farbeinstellungen im Konfigurations-Fenser meiner Anwendung verändert hat, sollen ausgewählte Komponenten in allen Forms der Anwendung sofort angepasst werden. Mit folgendem (beispielhaften) Code kann ich das innerhalb eines Fensters erledigen...

Delphi-Quellcode:
procedure TfoMain.SetAllColors;
var i : Integer;
begin
  for i:=0 to ComponentCount-1 do
    if Components[i] is TListbox then (Components[i] as TListBox).Color:=NewColor;
end;
Nun sollen aber ALLE Listboxen in ALLEN Forms der Anwendung auf diese bequeme Weise farblich angepasst werden. Versuche, dies mit folgendem Code zu erledigen, hatten keinen Erfolg...

Delphi-Quellcode:
procedure TfoMain.SetAllColors;
var i : Integer;
begin
  with Application do                      // << ZUSÄTZLICH
    for i:=0 to ComponentCount-1 do
      if Components[i] is TListbox then (Components[i] as TListBox).Color:=NewColor;
end;
Gibt es da eine Lösung?

dataspider 20. Sep 2007 20:18

Re: Komponenten in allen Forms ändern
 
Hi,

so ganz grob durch die Forms der Application iterieren:
Delphi-Quellcode:
procedure TForm27.FormCreate(Sender: TObject);
Var
  fi: Integer;
  ci: Integer;
begin
  for fi := 0 to screen.FormCount - 1 do
    for ci := 0 to Screen.Forms[fi].ComponentCount - 1 do
      ...
end;
Cu, Frank

mimi 20. Sep 2007 20:21

Re: Komponenten in allen Forms ändern
 
Ja die gibt es, sie ist sogar recht einfach:
Delphi-Quellcode:
procedure TfoMain.SetAllColors;
var i,f : Integer;
begin
  for f:=0 to Screen.FormCount-1 do begin
    for i:=0 to Screen.Forms[f].ComponentCount-1 do
      if Screen.Forms[f].Components[i] is TListbox then ( Screen.Forms[f].Components[i] as TListBox).Color:=NewColor;
    end;
  end;
Wenn du glück hast klappt das, habe ich jetzt nicht getestet, kann sein das er ein paar Fehler enhält...
ab

pstruh 20. Sep 2007 20:31

Re: Komponenten in allen Forms ändern
 
Joooo, genau so hatte ich es mir vorgestellt - nur an "Screen" habe ich dabei gar nicht gedacht und bei "Application" natürlich nix gefunden. Von der Wortung fände ich es dort logischer "aufgehoben". Aber, anyway, muss man sich halt merken! Vielen Dank für die schnellen Antworten!
Gruß aus Hamburg

pstruh 20. Sep 2007 20:50

Re: Komponenten in allen Forms ändern
 
Zur Vollständigkeit noch 'ne kurze Rückmeldung:

Delphi-Quellcode:
procedure TfoMain.SetAllColors;
var i,j : Integer;
begin
  with Screen do
    for i:=0 to FormCount-1 do
      for j:=0 to Forms[i].ComponentCount-1 do
        with Forms[i] do begin
          if Components[j] is TEdit then (Components[j] as TEdit).Color:=ReadModeColor;
          // ...
          // ..
          end;
end;
Funktioniert tadellos!
Gruß


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