Autor Beitrag
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: So 18.02.07 16:58 
Titel: Re: Die komponenten aller Forms durchgehen/Eigenschaften set
user profile iconklezmor hat folgendes geschrieben:

Dieser Code hier funzt nicht.

Aaaarggghh .... meine Lieblingsaussage. :cry:


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: So 18.02.07 17:33 
user profile iconHelgeLange 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 :wink: ) 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: So 18.02.07 19:34 
user profile iconHelgeLange 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 18.02.07 20:04 
Es geht wohl um ein einheitliches Erscheinungsbild ? Kurzer Kommentar, wie ich an so etwas rangehe : völlig anders. :mrgreen: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: So 18.02.07 20:18 
user profile iconMartok 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: So 18.02.07 21:11 
jopp, das kann's gewesen sein...
naja, ist sonntag.. auch und gerade hier :D

_________________
"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