![]() |
Komponente über Variable ansprechen
Hallo Leute,
Ich wollte schon länger mal etwas fragen, da ich um das Problem immer drumherum programmiert habe, hat es mich nie so wirklich gestört.. rein aus Interesse frage ich jetzt mal: Angenommen ich habe 1000 Shapes auf meiner Visualisierung und ich möchte alle z.B. visible:=False setzen. Wie würde ich das am leichtesten machen? Meine Shapes würden vom Name her z.B. E1,E2,E3,...,E1000 heißen. Normal: E1.visible:=False; E2.visible:=False; . . Falsch wäre: Schelife mit i hochzählen und: Ei.visible:=False.. aber so hätte ich es gerne:D geht das irgendwie? |
AW: Komponente über Variable ansprechen
Die einfachste Möglichkeit:
![]() |
AW: Komponente über Variable ansprechen
Zitat:
Während sie also zur Laufzeit erstellt werden, werden ihre Referenzen also auch gleich passend in irgendwas abgespeichert und schon mußt du sie nicht mehr suchen. :zwinker: TComponent().FindComponent und .Components ... nach Owner-Beziehung TControl().FindControl und .Controls ... nach Parent-Beziehung |
AW: Komponente über Variable ansprechen
Dankeschön! :)
Ja das mit den 1000 Komponenten war nur ein Beispiel, aber ich rede schon von sich auf der Form befindlichen Komponenten. "FindComponent" ist das was ich gesucht habe :) |
AW: Komponente über Variable ansprechen
Wenn deine Shapes einen gemeinsamen Parent haben, kannst du den auf Visible=False setzen.
Du kannst auch über die Components iterieren (TComponent.Components) und deren Namen (TComponent.Name) abfragen. Du kannst auch abfragen, ob es TShapes (Component is TShape) sind. HTH |
AW: Komponente über Variable ansprechen
Für sowas habe ich mir mal folgende Routine geschrieben:
Delphi-Quellcode:
class procedure TUtilities.ForAllComponentsOf<T>(Container: TComponent; DoProc: TProc<T>);
var cmp: TComponent; begin for cmp in Container do if cmp is T then DoProc(T(cmp)); end; Das würde man in deinem Fall (angenommen, es gibt keine anderen Shapes) innerhalb des Forms dann in etwa so benutzen:
Delphi-Quellcode:
TUtilities.ForAllComponentsOf<TShape>(Self,
procedure(Arg: TShape) begin Arg.Visible := False; end); |
AW: Komponente über Variable ansprechen
Vielen Dank! Sehr interessante Antworten die werde ich mir auf jedenfall merken :-D
|
AW: Komponente über Variable ansprechen
Zitat:
|
AW: Komponente über Variable ansprechen
Zitat:
|
AW: Komponente über Variable ansprechen
Zitat:
Ergänzend dazu: Die Routine ist hier Bestandteil einer TUtilities-Klasse, aber das kann ja auch in jede anderen Hilfsklasse kommen. Sowas hat doch jeder irgendwo rumliegen, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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