![]() |
Events von Objekten, die während der Laufzeit erzeugt werden
Hallo.
Wie kann ich die Events (OnMouseMove,OnClick usw..). Von Objekten, welche ich in einer eigenen Funktion erzeuge bestimmen ? Beispiel:
Delphi-Quellcode:
~stift
procedure MyProcedure;
var Names : Array [0..5] of TLabel; begin //Objekte erzeugen for i:=0 to high(names) do Names[i] := TLabel.Create(Form1); //anzeigen for i:=0 to high(names) do Names[i].Parent:=Form1; //Wie kann ich jetzt das Ereignis zB. Names[i].Onclick bestimmen ? ???? ... |
Re: Events von Objekten, die während der Laufzeit erzeugt we
du nimmst Names[i].OnClick und weißt diesem einfach eine passende Methode (Prozedur) zu
|
Re: Events von Objekten, die während der Laufzeit erzeugt we
Und nimm bitte eine TObjectList oder nur eine TList. Damit kannst du deine Objekte wesentlich einfacher verwalten! Ebenso wäre es teilweise nicht ganz schlecht, deinen Labels Namen zu geben, sodass du diese später besser verwalten/identifizieren kannst ;)
Was mit gerade noch eingefallen ist: überleg mal, was mit deinem in der Methode definierten Array passiert, wenn diese Methode verlassen wird? Benötigst du diese Liste außerhalb der Methode kannst du nicht darauf zugreifen :) |
Re: Events von Objekten, die während der Laufzeit erzeugt we
Zitat:
|
Re: Events von Objekten, die während der Laufzeit erzeugt we
Vielen Dank.
Wofür brauch ich eine TComponentList, wenn ich nur Labels brauche ? ~stift |
Re: Events von Objekten, die während der Laufzeit erzeugt we
Die TComponentList hilft bei der Verwaltung der Einträge und ggf. deren Freigaben.
Das steht aber alles in der Hilfe... |
Re: Events von Objekten, die während der Laufzeit erzeugt we
TList = Pointer
TObjectList = TObject TComponentList = TComponent TLabel stammt über Umwege von TComponent ab TComponent stammt über Umwege vom Basistypen TObject ab TObject ist indirekt ein Pointer Also im Prinzip kannst du ale diese Listen nehmen, aber da TComponent am nächsten an TLabel dran ist, würde sich die TComponentList natürlich am Besten eignen :zwinker: und außerdem hat diese TComponentList noch ein paar nette Zusatzfeatures, gegenüber den anderen Varianten. |
Re: Events von Objekten, die während der Laufzeit erzeugt we
Danke, werd mir das ganze mal näher anschauen.
|
Incompatible types: 'method pointer and regular procedure'
Zitat:
Das funktioniert so leider nicht. Aber warscheinlich mache ich auch etwas verkehrt. Zitat:
Delphi-Quellcode:
procedure DoStuffs;
begin //work to do end; procedure MyProcedure; var Names : Array [0..5] of TLabel; begin //Objekte erzeugen for i:=0 to high(names) do begin Names[i] := TLabel.Create(Form1); Names[i].OnClick := DoStuffs; end; //anzeigen for i:=0 to high(names) do Names[i].Parent:=Form1; |
Re: Events von Objekten, die während der Laufzeit erzeugt we
Die Methode muss eine Methode der passenden ereignisbehandlung sein.
Du kannst Sie z.B. in Deiter Form1 deklarieren:
Delphi-Quellcode:
Diese kannst Du dann Deiner Label-Ereignisbehandlung zuweisen (es wird im Grunde ein Zeiger auf diese Methode zugewiesen).
procedure TForm1.MyLabelsClick(Sender: TObject);
begin (Sender as TLabel).Color := clRed; end; Hast Du Dir mal die TComponentList angesehen? Das ändert zwar nichts an Deiner jetzigen Frage, ist aber evtl. eine sinnvolle Lösung für die Verwaltung Deiner Labels. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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