Moin Char,
statt
TClickProcedure = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
schreib mal
Code:
TClickProcedure = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) [color=red]of object;[/color]
soweit ich das im Moment überblicke müsste es dann gehen.
Durch das "of object" wird TClickProcedure zu einem Methodentyp, die intern noch einen Parameter haben, ansonsten wäre es ein normaler Prozeduretyp.
Du könntest übrigens auf diese Deklaration völlig verzichten, wenn Du statt Deines TClickProcedure einfach den Typ TMouseEvent angibst. Der ist schon entsprechend vordeklariert.