Hallo Uwe,
die Signatur von TMouseEvent() hat
Sender: TObject als ersten Parameter - bei deinen Prozeduren MouseDown() und ItemMouseDown() fehlt dieser wichtige Parameter.
Welchen Zweck verfolgst du mit der private method TDateLine.ItemMouseDown()?
Delphi-Quellcode:
type
TDateLine = class(TCustomGrid)
private
FOnItemMouseDown: TMouseEvent;
// procedure ItemMouseDown() muss hier weg, sie wird später vom
// Entwickler als Methode derjenigen Form vereinbart, welche TDateLine
// beherbergt.
published
property OnItemMouseDown: TMouseEvent read FOnItemMouseDown write FOnItemMouseDown;
end;
Wenn du dem Entwickler erlauben möchtest einen eigenen Event-Handler für das OnMouseDown-Event bereit zu stellen, dann solltest du nur eine Hülle bereitstellen. Die Technik kannst du beim OnMouseDown-Event von TControl studieren. Der Message-Handler ruft eine Prozedur DoMouseDown() auf - das ist die Hülle - und dort wird dann geprüft, ob der Entwickler der puslished property OnMouseDown einen eigenen Handler zugewiesen hat.
Grüße vom marabu