![]() |
Re: Variable zur Laufzeit erstellen
Zitat:
Zitat:
Ich hab nicht gesagt, dass die OOP nicht ihre Vorzüge hat, geschweige denn dass sie schlecht ist :shock: Ich meinte nur, dass es nicht immer notwendig ist, ein Objekt zu erzeugen. Manche Dinge sind anders viel leichter zu handhaben, wenn man kein Objekt erzeugt, bzw. bieten einem einfach keine besonderen Nachteile, die zwingend sind, ein Objekt zu erzeugen. Für einfache Listen mit Variablen (dabei auch Komponentenerzeugung etc.) verwende ich i.d.R. auch Arrays. Wenn es darum geht, längere Listen zu erzeugen und zu verwalten, verwende ich Listen (TObjectList). Ich nehme immer das, was ich brauche. |
Re: Variable zur Laufzeit erstellen
Eine Frage hätte ich noch...
Wenn ich die Komponenten so wie Der_Unwissende erstelle, also per ObjectList klappt das wunderbar. Doche welche Namen haben die Komponenten denn dann ? Gruß, Nico |
Re: Variable zur Laufzeit erstellen
Schau dir den Code doch mal genau an, da steht doch alles drin.
Delphi-Quellcode:
An der markierten Stelle wird das 1. Element aus der Liste geholt und zu einem TImage gecastet.
var list : TObjectList
image : TImage; begin list := TObjectList.Create; list.Add(TImage.Create(nil)); image := TImage(list.get(0)); //<-- .... .... end; |
Re: Variable zur Laufzeit erstellen
:wall: *g* wie dumm, jetzt hab ichs...
Sagt mal, eine ObjectList kann man nicht 2 Spaltig machen ? :gruebel: Bzw. mein Problem liegt auch darin, woher weiss ich denn, wenn ich eine Komponente ansprechen will, das wievielte Element es der Liste ist ? |
Re: Variable zur Laufzeit erstellen
Zitat:
Delphi-Quellcode:
Mit dem Weg kannst du natürlich nach einer beliebigen Eigenschaft suchen (Name ist halt meistens eher unwichtig, wenn man erst zur Laufzeit erstellt).
var list : TObjectList;
buffer : TImage; i : Integer; begin list := TObjectList.Create; buffer := TImage.Create(nil); buffer.name := ...; list.add(buffer); ... ... if list.Count > 0 then begin for i := 0 to buffer.Count - 1 do begin if TImage(buffer.Items[i]).name = .... then begin // tu was du möchtest break; end; end; end; end; Aber wenn es nur um den Namen geht, kannst du auch so nach dem Element suchen
Delphi-Quellcode:
var list : ComponentList;
i : Integer; begin ... ... if list.Count > 0 then begin for i := 0 to list.Count - 1 do begin if list.Items[i].name = .... then begin // mach was du willst break; end; end; end; end; |
Re: Variable zur Laufzeit erstellen
Mein Problem, leider immernoch:
Ich habe jetzt mehrere TImages erstellt. Wenn ich jetzt ein bestimmes ansprechen will, sagen wir ich klicke drauf. Woher weiss ich dann den Komponentennamen ?? |
Re: Variable zur Laufzeit erstellen
Mit dem Parameter Sender bekommst du doch das aktuelle Image. Den Index des Images kannst du dann über TObjectList.IndexOf ermitteln
|
Re: Variable zur Laufzeit erstellen
Stimmt, thx
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 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