ich habe ein Problem beim Erstellen eigener Kompnenten. Wenn ich, wie es bei vielen der examples im Lazarus-Verzeichnis geschieht, beim Kreieren einer Form bzw. Komponente einem Event im constructor MyForm.Create(TheOwner: TComponent) eine best. Prozedur zuweisen will (zB OnMouseMove := FormMouseMove), dann erhalte ich die Fehlermeldung: Error: Wrong number of parameters specified for call to "FormMouseMove". Beide sind doch vom Typ TMouseMoveEvent. Wieso gibt es dann diese Fehlermeldung?
Ich habe dann versucht, zB den Kopf der Unit TPopupNotifier vor meine eigene Form zu kopiern. Im gesamten Text habe ich "Notifier" durch "Notiz" ersetzt (also TPopupNotiz, TNotizForm, TNotizXButton etc.) und dann den Implementationsteil hinter implementation kopiert. Wenn ich dann kompilieren will, dann erscheint schon bei der ersten (originalen) Zuweisung:
Code: Alles auswählen
constructor TNotizXButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FState := nbsUp;
OnMouseUp := HandleMouseUp;
OnMouseDown := HandleMouseDown;
end;
Dasselbe Phänomen erscheint beim Erstellen einer eigenen Unit mit Form. Wenn ich im ObjektInspektor eine Zuweisung vornehme (zB OnKeyPress --> FormKeyPress), dann geht das ohne weiteres. Sobald ich aber diese Zuweisung "von Hand" machen will (im constructor Form.Create(TheOwner: TComponent), dann erscheint wieder obige Fehlermeldung.
Warum ist das bei all den vielen Lazarus-Programmbeispielen möglich, nur bei meinen Programmierversuchen nicht?
Was mache ich da verkehrt?
Herzlichen Dank für alle Hilfe!
P. Nikolaus