![]() |
Tcompenent über selbst erzeugten namen ansprechen
Hallo,
ich habe ein paar Images erzeugt, und diese will ich gerne ansprechen über einen von mir erzeugten Namen. BSP: Image1, Image2, Image3... usw. bitte kein array als lösung vorshlagen, hatte ich schon, und ich brauche aber die andere variante. über componentcount kann ich ja alle componenten ermitteln. kann ich jetzt auch das ganze andersherum machen, sprich dass ich z.b. sage, mache was mit TImage('Image1')...??? |
Re: Tcompenent über selbst erzeugten namen ansprechen
Was spricht gegen ein Array und eine Funktion die darauf zugreift? Es gibt FindComponent aber da musst du in aller Regel casten um die gewünschten Dinge zu bewerkstelligen und intern wird da auch ein Array gefunden - nur mit dem Nachteil das neben den Komponenten die man will auch noch andere mit Array sind und das ganze somit langsamer ist als ein eigenes Array anzulegen.
|
Re: Tcompenent über selbst erzeugten namen ansprechen
eigentlich nix, aber wollte es halt ohne machen, und wissen obs auch gehen würd...
|
Re: Tcompenent über selbst erzeugten namen ansprechen
Hier könnte Form.FindComponent() helfen. Die Lösung mit dem Array wäre aber die besserer.
|
Re: Tcompenent über selbst erzeugten namen ansprechen
Ich mache das immer mit einer TList, da muss man sich zwar merken und immer Typecasten das dort ein TImage drinne ist aber mir ist das lieber als mit SetLength das Array zu bedienen. Außerdem kann man Komponenten aus der Mitte schnell und einfach löschen oder welche einfügen.
|
Re: Tcompenent über selbst erzeugten namen ansprechen
Man kann auch einfach eine neue Klasse von TStringList ableiten und eine entsprechende Zugriffsmethode hinzufügen:
Delphi-Quellcode:
...und zum Hinzufügen eines TImage zur Liste :
type
TTImageList = class (TStringList) public function Image (AName : string) : TImage; ... implementation function TTImageList.Image (AName : string) : TImage; var index : Integer; begin index := IndexOf (AName); if index >= 0 then Result := TImage(Objects [index]) else Result := nil; end;
Delphi-Quellcode:
Dann geht der Zugriff auf ein Image in der z.B. Liste so:
var
liste : TTImageList; image : TImage; begin ... liste.AddObject (image.Name, image);
Delphi-Quellcode:
image = liste.Image('Image1');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 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 by Thomas Breitkreuz