![]() |
"Direkter zugriff auf auslösendes Objekt"
Hallooo,
hab da mal ne Frage... ich hab nen Ganzes Formular mit Buttons und immerwieder ähnlichen Codesegmenten. Nun frag ich mich obs ne Möglichkeit gibt auf die Eigenschaften des "aufrufenden Objekts" also des Buttons der gedrückt wurde zuzugreifen OHNE seinen Bezeichner zu verwenden... was ich machen möchte ist also, aus dem hier:
Delphi-Quellcode:
sowas hier:
procedure TfrmMain.btnBspClick(Sender: TObject);
var beschreibung, code : string; begin beschreibung := 'blah'; code := 'blubb'; addElem(beschreibung,code,strtoint(btnBsp.Caption),'1','1'); end;
Delphi-Quellcode:
procedure TfrmMain.btnBspClick(Sender: TObject);
var beschreibung, code : string; begin beschreibung := 'blah'; code := 'blubb'; addElem(beschreibung,code,strtoint(this.Caption),'1','1'); end; zu machen... gibts da irgned ne Möglichkeit? Greetz Asus |
Re: "Direkter zugriff auf auslösendes Objekt"
Das auslösende Objekt bekommst du im Parameter Sender
|
Re: "Direkter zugriff auf auslösendes Objekt"
jaaaaaa schooooo aber wie komm ich an die Caption? Irgendwie raff ich des nüch :wall: :wall: :wall:
|
Re: "Direkter zugriff auf auslösendes Objekt"
Du musst das Objekt in den passenden Typ Casten:
z,B.:
Delphi-Quellcode:
(Sender as TButton).Caption := 'Ba Bla';
|
Re: "Direkter zugriff auf auslösendes Objekt"
Das ist kein Grund zum Masochisten zu werden - ehrlich!
Du musst einfach nach TButton casten:
Delphi-Quellcode:
Bei der zweiten Variante wird zusätzlich noch eine Überprüfung gemacht, ob es sich wirklich um einen Button handelt, allerdings dauert das natürlich geringfügig länger.
addElem(beschreibung,code,strtoint(TButton(Sender).Caption),'1','1');
//oder addElem(beschreibung,code,strtoint((Sender as TButton).Caption),'1','1'); |
Re: "Direkter zugriff auf auslösendes Objekt"
vielen vielen Dank :D
|
Re: "Direkter zugriff auf auslösendes Objekt"
Kleine Anmerkung noch zu den zwei unterschiedlichen Varianten: Bei größeren Projekten empfiehlt es sich, wo immer möglich die "Sender as"-Variante zu benutzen, man spart sich dadurch viel Haareraufen wenn man mal irgendwo eine Komponente ändert und dadurch an zig Stellen die blinden Typecastings mehr oder weniger Chaos verursachen :) Code an zeitkritischen Stellen muss man dann halt so gut wie möglich anderweitig absichern wenn man wirklich jede Millisekunde braucht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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