![]() |
Generell zu dyn. Komponenten
Hallo,
ich versuche derzeit Daten aus einer ini auszulesen und dementsprechend Button zu erstellen. Das klappt auch alles wunderbar. Nur eine Frage habe ich, die sich nicht nur auf die Buttons bezieht (in meinem Problem natürlich schon), sondern generell für alle dynamisch, mehrfachvorkommenden Objekte. Nehmen wir an, ich erstelle mit einer Schleife X Objekte.
Delphi-Quellcode:
Jetzt klicke ich auf die Komponente 3 (10 Komponenten wurden erstellt). Woher weiß ich jetzt, auf welche Komponente ich geklickt habe / bzw verallgemeinert, welche Komponente ich anspreche?
procedure TForm1.CreateBtn;
var s:TStringList; i,top,id:integer; begin s:=TStringList.Create; ini.ReadSectionValues('Eintrag',s); top:=10; id:=1; for i:=1 to s.Count-1 do begin btn:=TButton.Create(Self); btn.Caption:=ini.ReadString('Eintrag',IntToStr(i),text); btn.Parent:=Form1; btn.Name:='btn'+Inttostr(id); inc(id); top:=top+25; btn.Top:=top; btn.Left:=10; btn.Width:=90; Btn.OnClick:=Click; end; end; Danke |
Re: Generell zu dyn. Komponenten
Beim OnClick Ereignis des Buttons wird immer ein Sender als TObject mit übergeben, der ein Pointer zum Button selbst ist, und den du im Ereignis als Sender as TButton ansprechen kannst.
|
Re: Generell zu dyn. Komponenten
Verdammt ist das einfach! :wall:
Meine Güte...ich glaube ich sollte besser 8 geben, bevor ich poste. Hätte ich auch selsbt drauf kommen können. THX |
Re: Generell zu dyn. Komponenten
Ist ja auch WE :-)
|
Re: Generell zu dyn. Komponenten
Gut, Theorie verstanden und schön, dass es der Threadersteller dann auch umsetzen konnte. Beim Zweiten habe ich trotzdem Probleme. :)
Wie wärs mit nem Beispielcode, z.B. wenn ich draufklick, so dass ich die Caption des Buttons, auf dem geklickt wurde, in der OnClick-Prozedur auslesen/auswerten kann? Danke schonmal. :) *Edit* Okay, dass wäre die Lösung (im OnClick-Ereignis):
Code:
var Button: TButton; begin Button := Sender as TButton; Anschließend kann so drauf zugegriffen werden, so als wenn es sich um einen reellen Button handelt. :) |
Re: Generell zu dyn. Komponenten
Einfach:
Delphi-Quellcode:
(Sender as TButton).Caption;
|
Re: Generell zu dyn. Komponenten
Nichts leichter als das, sagte Piggeldi...
Delphi-Quellcode:
oder
procedure TForm8.Button1Click(Sender: TObject);
begin if Sender is TButton then TButton(Sender).Caption := 'Neue caption' ; end;
Delphi-Quellcode:
procedure TForm8.Button1Click(Sender: TObject);
begin if Sender is TButton then (Sender as TButton).caption := 'Neue caption' ; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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