Autor |
Beitrag |
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: So 18.02.07 14:00
Ich möchte alle Komponenten aller Formulare durchgehen und z.B. irgendwelche Eigentschaften setzen, da es aber ca. 10 formulare sind, ist das manuell sehr aufwendig.
Dieser Code hier funzt nicht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| for i :=0 to application.ComponentCount - 1 do begin
if Components[i] is TGradBtn_Ex then begin TGradBtn_Ex(Components[i]).BeginColor:=buttonBeginColor; TGradBtn_Ex(Components[i]).EndColor:=buttonEndColor; end; end; |
Kann mir jemand helfen?
MFG Klezmor.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
Zuletzt bearbeitet von klezmor am So 18.02.07 17:21, insgesamt 1-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 18.02.07 14:58
Nimm einfach Screen.Forms.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: So 18.02.07 15:03
hä? Das musst du mir einwenig genauer erklären.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 16:00
Screen.Forms hat doch nur MDI fenster in der Liste, oder ?
soweit ich weiss, gibt es keine application-weite Liste aller Komponenten, du kannst es vllt mit messages machen, also jedem form ein Nachrichten-prozedur verpassen, und in der die komponenten der Form jeweils durchklappern. Ich habe das damals mit einem basis-Formular gelöst, welches als grundlage aller formulare in meiner Anwendung ist. Somit hat jedes Formular schon von vornherein einige Funktionen mehr. Mit Dispatch zum bsp. kannst Du an Komponenten (und auch Forms) Nachrichten senden.
hast Du eine MDI-Anwendung, kannst Du Screen.Forms nutzen, würde aber trotzdem die nachrichten-procedure nehmen, da sie sicher ist (wird von Delphi die ganze Zeit benutzt) und auch unabhängig vom Typ, du kannst sie an jede Komponente schicken, da Dispatch schon in TObject definiert ist, wenn ich mich recht entsinne.
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: So 18.02.07 16:58
Titel: Re: Die komponenten aller Forms durchgehen/Eigenschaften set
klezmor hat folgendes geschrieben: |
Dieser Code hier funzt nicht.
|
Aaaarggghh .... meine Lieblingsaussage.
Zufällig weiß ich gerade auswendig, was daran nicht funktioniert - ansonsten darfst du auch gerne etwas genauer beschreiben, was nicht funktioniert und wie sich das äußert.
Also:
TApplication.Components enthält die Forms der Anwendung.
Diese Forms haben alle eine eigene Komponentenliste, also TForm.Components. Darin sind (in der Regel) dann die Komponenten, die du auf der Form siehst.
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 17:02
mit der Einschränkung, dass dass zum Bsp. Komponenten auf eine Panel nicht in nder Komponenten-Liste des Forms auftauschen, sondern des Panels... Also heisst das, dass Du rekursiv vorgehen musst 
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: So 18.02.07 17:33
HelgeLange hat folgendes geschrieben: | mit der Einschränkung, dass dass zum Bsp. Komponenten auf eine Panel nicht in nder Komponenten-Liste des Forms auftauschen, sondern des Panels... Also heisst das, dass Du rekursiv vorgehen musst  |
Das ist (wieder in der Regel  ) nicht korrekt. Eine Komponente auf einem Panel taucht - gemeinsam mit dem Panel - in der Komponentenliste des Forms auf.
Eine Komponente taucht in der Liste seines Owners (nicht Parent) auf. Der Owner ist bei "zusammengeklickten" Forms immer die Form.
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 17:54
stimmt, gerade angetestet. Sind alle in der KomponentenListe der Form. Haben die das geándert im laufe von Delphi ? oder warum habe ich das im Hinterkopf gehabt ?
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: So 18.02.07 19:34
HelgeLange hat folgendes geschrieben: | stimmt, gerade angetestet. Sind alle in der KomponentenListe der Form. Haben die das geándert im laufe von Delphi ? oder warum habe ich das im Hinterkopf gehabt ? |
D7 hat's so. D5 weiß ich nicht mehr. Und zu D3-Zeiten hat mich sowas noch nicht interessiert. 
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 18.02.07 19:35
War da nicht mal was mit Form.Controls[]? Irgendwie war doch Controls mal das 'einsortierte', und Components das andere...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: So 18.02.07 20:04
Es geht wohl um ein einheitliches Erscheinungsbild ? Kurzer Kommentar, wie ich an so etwas rangehe : völlig anders.  mit OOP und Objektablage. Sofern die Forms auch nur irgendwas gemeinsam haben, vererbt man das besser und wenn es nur eine Caption ist.
_________________ Gruß
Hansa
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: So 18.02.07 20:18
Martok hat folgendes geschrieben: | War da nicht mal was mit Form.Controls[]? Irgendwie war doch Controls mal das 'einsortierte', und Components das andere... |
Nein, aber du hast wenigstens das richtige Stichwort gebracht:
In Controls einer Komponente A stehen die Komponenten B bis X, deren Parent die Komponente A ist.
In Components einer Komponente A stehen die Komponenten B bis X, deren Owner die Komponente A ist.
Ich glaube, jetzt haben wir's. 
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: So 18.02.07 21:11
jopp, das kann's gewesen sein...
naja, ist sonntag.. auch und gerade hier 
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|