Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi globale Prozedur - zur Laufzeit erzeugtes Form (https://www.delphipraxis.net/50432-globale-prozedur-zur-laufzeit-erzeugtes-form.html)

BenjaminHelbig 25. Jul 2005 19:02


globale Prozedur - zur Laufzeit erzeugtes Form
 
Hallöle liebe DP'ler,

ich stehe momentan vor folgender Schwierigkeit. Ich erzeuge zur Laufzeit ein MDI Formular. Dieses enthält verschiedene globale Prozeduren, so z.B. myIMGclick;
Jetzt erzeuge ich zur Laufzeit ein TImage dessen Parent eben das zur Laufzeit erzeugte MDI Formular ist. Soweit kein Problem, aber wie weiße ich dem TImage die Methode myIMGclick als "OnClick" Ereignis zu?
Folgender Code läuft leider nicht:

Delphi-Quellcode:
var myImg : TImage;
begin
MyForm := TNewDBTable.Create(self);
MyImage := TImage.Create(MyForm);
MyImage.Parent := MyForm;
MyImage.OnClick := myIMGclick;
end;
was ja eigentlich auch logisch ist, da der Compiler ja die Prozedur "myIMGclick" nicht unter MyForm findet.

Grüße Ben

SMO 25. Jul 2005 19:06

Re: globale Prozedur - zur Laufzeit erzeugtes Form
 
Zitat:

Zitat von BenjaminHelbig
Dieses enthält verschiedene globale Prozeduren, so z.B. myIMGclick;
...
Soweit kein Problem, aber wie weiße ich dem TImage die Methode myIMGclick als "OnClick" Ereignis zu?

Eine globale Prozedur ist etwas anderes als eine Methode. Methoden sind Prozeduren/Funktionen die zu einer Klasse gehören. myIMGclick muss also so deklariert sein, damit die Zuweisung klappt:
Delphi-Quellcode:
procedure TIrgendeineKlasse.myIMGclick(Sender: TObject);
Dann brauchst du noch eine Instanz dieser Klasse, denn "MyImage.OnClick := TIrgendeineKlasse.myIMGclick" ist ebenfalls unzulässig. Es muss schon "MyImage.OnClick := EinObjekt.myIMGclick" sein.

jfheins 25. Jul 2005 19:10

Re: globale Prozedur - zur Laufzeit erzeugtes Form
 
Oder so wie hier:
http://www.delphipraxis.net/internal...=302598#302598

BenjaminHelbig 26. Jul 2005 18:00

Re: globale Prozedur - zur Laufzeit erzeugtes Form
 
Hallöchen,

thx für Eure schnelle Antwort. @SMO, dass mit der Klasse ist klar, die Prozedur myIMGclick ist ja auch als Klasse gekapselt. Im MDI Formular (welches NewDBTable heißt) steht unter public:

Delphi-Quellcode:
TNewDBTable.myIMGclick(blabla);
Ich bin blos nicht auf die Idee gekommen, anstatt
Delphi-Quellcode:
MyImage.OnClick := MyForm.myIMGclick;
zu schreiben
Delphi-Quellcode:
MyImage.OnClick := TNewDBTable.myIMGclick;
was aber auch nicht klappt, denn, was ja auch klar ist, OnClick ist ja ein NotifyEvent, während myIMGclick eine Prozedur ist. Also müsste ich den Tipp von jfheins nehmen. da steig ich aber noch nicht so ganz durch.

Trotzdem thx.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz