Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Direkter zugriff auf auslösendes Objekt" (https://www.delphipraxis.net/101129-direkter-zugriff-auf-ausloesendes-objekt.html)

asusbob 8. Okt 2007 20:27


"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:
procedure TfrmMain.btnBspClick(Sender: TObject);
  var beschreibung, code : string;
begin
  beschreibung := 'blah';
  code        := 'blubb';
  addElem(beschreibung,code,strtoint(btnBsp.Caption),'1','1');
end;
sowas hier:

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

mkinzler 8. Okt 2007 20:29

Re: "Direkter zugriff auf auslösendes Objekt"
 
Das auslösende Objekt bekommst du im Parameter Sender

asusbob 8. Okt 2007 20:31

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:

mkinzler 8. Okt 2007 20:32

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';

Apollonius 8. Okt 2007 20:33

Re: "Direkter zugriff auf auslösendes Objekt"
 
Das ist kein Grund zum Masochisten zu werden - ehrlich!
Du musst einfach nach TButton casten:
Delphi-Quellcode:
addElem(beschreibung,code,strtoint(TButton(Sender).Caption),'1','1');
//oder
addElem(beschreibung,code,strtoint((Sender as TButton).Caption),'1','1');
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.

asusbob 8. Okt 2007 20:36

Re: "Direkter zugriff auf auslösendes Objekt"
 
vielen vielen Dank :D

OldGrumpy 10. Okt 2007 12:11

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