![]() |
Ableitung von TButton und OnMouseDown
Hallo,
ich möchte gern die TButtons etwas pimpen und wollte daher eine eigene Klasse davon ableiten. Das hier ist ![]()
Delphi-Quellcode:
. Jetzt scheitere ich aber dran, dass mir der Compiler beharrlich erklärt, mein MouseDown würde sich von der vorherigen Deklaration unterscheiden (E2037).
OnMouseDown
Da ich die Procedurköpfe in der Implementation aber nicht von Hand tippe, sollte das zumindest passen. Ich bin im Moment ziemlich ratlos, vermute aber einen profanen Fehler, den bestimmt jemand schnell entdeckt:
Delphi-Quellcode:
Unit _main;
Interface Uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; Type TMyButton = Class(TButton) Private fOnMouseDown : TMouseEvent; Procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Override; Published Property OnMouseDown: TMouseEvent Read fOnMouseDown Write fOnMouseDown; End; TForm1 = Class(TForm) End; Var Form1 : TForm1; Implementation {$R *.dfm} Procedure TMyButton.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); Begin // // == > genau hier würde ich gern etwas machen // If Assigned(fOnMouseDown) Then fOnMouseDown(Sender, Button, Shift, X, Y); End; End. |
AW: Ableitung von TButton und OnMouseDown
TButton.MouseDown (abgeleitet von TControl.MouseDown) hat keinen Parameter Sender. Wozu auch. Das ist ja eine Methode der Klasse TButton und du willst damit ja nicht auf Klicks auf andere Buttons reagieren. Du hast den Procedurekopf wahrscheinlich von irgendeinem OnMouseDown kopiert, das ist aber etwas anderes. Das ist ein Event, der an mehreren Butons hängen könnte und da muss man unterscheiden können, welcher Button geklickt wurde.
also:
Delphi-Quellcode:
Procedure MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Override; Und dann im TMyButton.MouseDown das fOnMouseDown mit self als erstem Parameter aufrufen. |
AW: Ableitung von TButton und OnMouseDown
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr. |
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 by Thomas Breitkreuz