![]() |
Komponenten durchgehen und darauf zugreifen?
wie kann ich alle Komponenten durchgehen und dann jedes einzelne dessen Left wert dem panel als ausgabe geben
also eigentlich sollte dann immer die letzte komponente dessen left wert ausgegeben werden. Sinn dahinter am ende sollen alle neuen verschobenen Images dessen leftwerte in einer Datenbank gespeichert werden. Hat da jemand eine Idee?
Delphi-Quellcode:
for i := FOGantt.ComponentCount - 1 downto 0 do
begin if FOGantt.Components[i] is Timage then begin Panel3.caption := inttostr( Components[i].left) ; |
AW: Komponenten durchgehen und darauf zugreifen?
Hier mal ein Ansatz - ungetestet:
Delphi-Quellcode:
for I := 0 to FOGantt.ComponentCount-1 do
if FOGantt.Components[I].ClassType = TImage then with TImage(FOGantt.Components[I]) do //irgendwas |
AW: Komponenten durchgehen und darauf zugreifen?
Moin...8-)
...ist zwar nur ein Beispiel. Aber bitte nicht with. :kotz: :wink: |
AW: Komponenten durchgehen und darauf zugreifen?
So sollte es funkionieren. Nachdem per is TImage sichergestellt ist, das es ein Image ist, muss danach noch ein Cast TImage(Components[i]) folgen.
Delphi-Quellcode:
for i := FOGantt.ComponentCount - 1 downto 0 do
if FOGantt.Components[i] is TImage then Panel3.caption := TImage(Components[i]).Left.ToString; |
AW: Komponenten durchgehen und darauf zugreifen?
Zitat:
Wenn überhaupt dann
Delphi-Quellcode:
Panel3.caption := IntToStr(TImage(Components[i]).Left)) ;
Delphi 10 Seattle Professional kennt .ToString nicht. Oder doch :) opps sehe gerade bin von Delphi 2010 ausgegangen. :stupid: Brauche wohl neue Brille! |
AW: Komponenten durchgehen und darauf zugreifen?
Mir erschließt sich der Sinn nicht, in einer Schleife die Caption eines Labels zu ändern. Das sieht man am Ende sowieso nicht bis auf den letzten Wert.
|
AW: Komponenten durchgehen und darauf zugreifen?
Das war nur ein Beispiel, um überhaupt erstmal an den Wert von Left zu kommen.
Zitat:
|
AW: Komponenten durchgehen und darauf zugreifen?
Weil ich ja so'n bisschen bequem bin habe ich mir für solche Zwecke einen Helper geschrieben:
Delphi-Quellcode:
Das Beispiel mit dem TImage würde damit dann in etwa so aussehen:
type
TComponentHelper = class helper for TComponent public function FindComponentOf<T: class>(const AName: string): T; procedure ForAllComponentsOf<T: class>(DoProc: TProc<T>); end; ... function TComponentHelper.FindComponentOf<T>(const AName: string): T; begin result := FindComponent(AName) as T; end; procedure TComponentHelper.ForAllComponentsOf<T>(DoProc: TProc<T>); var cmp: TComponent; begin for cmp in Self do if cmp is T then DoProc(T(cmp)); end;
Delphi-Quellcode:
ForAllComponentsOf<TImage>(
procedure(Arg: TImage) begin Panel3.caption := Arg.Left.ToString; end); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz