Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Doppelclick auf Button startet OnClick Event zweimal

  Alt 24. Jun 2010, 14:17
Du kannst entweder eine eigene WindowProc Methode schreiben, dort das WM_LBUTTONDBLCLK abfangen (1.Beispiel), oder einen kleinen Hack benutzen (2.Beispiel)
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    FOldButtonWndProc: TWndMethod;
    procedure NewButtonWndProc(var Message: TMessage);

...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldButtonWndProc:= Button1.WindowProc;
  Button1.WindowProc := NewButtonWndProc;
end;

procedure TForm1.NewButtonWndProc(var Message: TMessage);
begin
  if Message.Msg <> WM_LBUTTONDBLCLK then
  begin
    FOldButtonWndProc(Message);
  end;
end;
Delphi-Quellcode:
// Das hier direkt nach dem uses des interface Teils deiner Form
type
  TButton = class(StdCtrls.TButton)
  protected
    procedure WndProc(var Message: TMessage); override;
  end;

...

implementation

procedure TButton.WndProc(var Message: TMessage);
begin
  if Message.Msg <> WM_LBUTTONDBLCLK then
  begin
    inherited;
  end;
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat