AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi globale Prozedur - zur Laufzeit erzeugtes Form

globale Prozedur - zur Laufzeit erzeugtes Form

Ein Thema von BenjaminHelbig · begonnen am 25. Jul 2005 · letzter Beitrag vom 26. Jul 2005
Antwort Antwort
BenjaminHelbig

Registriert seit: 23. Okt 2003
Ort: Mannheim
80 Beiträge
 
Delphi 5 Professional
 
#1

globale Prozedur - zur Laufzeit erzeugtes Form

  Alt 25. Jul 2005, 20:02
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
--------
Es ist schon über so viele Dinge Gras gewachsen, dass ich keinem Rasen mehr traue.
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#2

Re: globale Prozedur - zur Laufzeit erzeugtes Form

  Alt 25. Jul 2005, 20:06
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:
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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: globale Prozedur - zur Laufzeit erzeugtes Form

  Alt 25. Jul 2005, 20:10
Oder so wie hier:
http://www.delphipraxis.net/internal...=302598#302598
  Mit Zitat antworten Zitat
BenjaminHelbig

Registriert seit: 23. Okt 2003
Ort: Mannheim
80 Beiträge
 
Delphi 5 Professional
 
#4

Re: globale Prozedur - zur Laufzeit erzeugtes Form

  Alt 26. Jul 2005, 19:00
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:

TNewDBTable.myIMGclick(blabla); Ich bin blos nicht auf die Idee gekommen, anstatt
MyImage.OnClick := MyForm.myIMGclick; zu schreiben
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.
--------
Es ist schon über so viele Dinge Gras gewachsen, dass ich keinem Rasen mehr traue.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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