Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kann Event nicht zuweisen! Wieso? (https://www.delphipraxis.net/146401-kann-event-nicht-zuweisen-wieso.html)

stho 19. Jan 2010 10:05


Kann Event nicht zuweisen! Wieso?
 
Hallo Leute

Ich hänge seit 1 Stunde an einem Problem das ich selbst mit Hilfe der SuFu nicht gelöst bekomme...
Ich erstelle zur Laufzeit ein Objekt. Das ist ja auch kein Problem.

Dann weise ich dem Objekt mit

Delphi-Quellcode:
OBJNAME.OnKeyDown := TestUnit.EventKeyDown(Sender: TObject; var Key: Word;
                                           Shift: TShiftState);
das Event zu.

Das event ist in der TestUnit so fediniert:

Delphi-Quellcode:
procedure EventKeyDown(Sender: TObject; var Key: Word;
                       Shift: TShiftState);
doch er sagt mir immer "Nicht genügend wirkliche Parameter"
Was mache ich hier falsch?! :wall:

Alaitoc 19. Jan 2010 10:10

Re: Kann Event nicht zuweisen! Wieso?
 
Die Parameter musst bzw. darfst du beim zuweisen nicht angeben.

Delphi-Quellcode:
OBJNAME.OnKeyDown := TestUnit.EventKeyDown;
MfG Alaitoc

stho 19. Jan 2010 10:15

Re: Kann Event nicht zuweisen! Wieso?
 
Zitat:

Zitat von Alaitoc
Die Parameter musst bzw. darfst du beim zuweisen nicht angeben.

Delphi-Quellcode:
OBJNAME.OnKeyDown := TestUnit.EventKeyDown;
MfG Alaitoc


hab ich schon ausprobiert ;-)
dann kommt folgendes:

E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

ich bin noch immer ratlos... habe ja schon in früheren projekten events angehängt...
aber dieses mal klappts einfach nicht :-(

Luckie 19. Jan 2010 10:16

Re: Kann Event nicht zuweisen! Wieso?
 
Deine Ereignisprozedur muss eine Methode einer Klasse sein.

stho 19. Jan 2010 10:19

Re: Kann Event nicht zuweisen! Wieso?
 
methode einer klasse....
okay, ich werde mal eine klasse draus basteln und schauen obs dann funktioniert.

im moment hab ich nur reine prozeduren in der testunit

Sharky 19. Jan 2010 10:22

Re: Kann Event nicht zuweisen! Wieso?
 
Zitat:

Zitat von stho
methode einer klasse. ...

Nich einer Klasse sondern die Methode muss zu der Klasse gehören in der OBJNAME deklariert ist.

himitsu 19. Jan 2010 10:35

Re: Kann Event nicht zuweisen! Wieso?
 
Der Compiler sagt wirklich was von "ungenügend Parametern"
nichts von "Prozedur kann nicht auf Methodenzeiger zugewiesen werden"?

Wenn dem so ist, dann kannst du mal versuchen den bei Methoden "versteckten" Self-Parameter mit anzugeben.
Delphi-Quellcode:
procedure EventKeyDown(Self, Sender: TObject; var Key: Word; Shift: TShiftState);

Zitat:

Zitat von Sharky
Nich einer Klasse sondern die Methode muss zu der Klasse gehören in der OBJNAME deklariert ist.

Nein, es kann eine Methode irgendeiner Klasse sein.
(darum wird bei Methoden ja auch die Instanz der zugehörigen Klasse mit gespeichert und als Self weitergegeben)

franktron 19. Jan 2010 11:23

Re: Kann Event nicht zuweisen! Wieso?
 
Da procedure EventKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
fehlte
of object;

also
Delphi-Quellcode:
procedure EventKeyDown(Sender: TObject; var Key: Word;
                       Shift: TShiftState) of object;

himitsu 19. Jan 2010 12:05

Re: Kann Event nicht zuweisen! Wieso?
 
Zitat:

Zitat von franktron
Da ... fehlte of object;

Das geht nur bei Deklaration einer Variable.
Eine Prozedur kann man nicht so deklarieren.

hoika 19. Jan 2010 12:27

Re: Kann Event nicht zuweisen! Wieso?
 
Hallo,

of object kann bei Prozedurtypen verwendet.

Delphi-Quellcode:
type
  TMyProc = procedure(x: Integer) of object;
Das ist aber ein anderes Thema.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Seite 1 von 2  1 2      

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