AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

Ein Thema von .chicken · begonnen am 2. Jun 2007 · letzter Beitrag vom 2. Jun 2007
Antwort Antwort
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

  Alt 2. Jun 2007, 16:04
Also ich habe folgendes zusammengeschustert:

Delphi-Quellcode:
procedure TMenuButton.WMLButtonDown(var Msg: TMessage);
begin
  MouseDown;
end;
procedure TMenuButton.WMLButtonUp(var Msg: TMessage);
begin
  MouseUp;
end;

procedure TMenuButton.MouseDown;
begin
  if (csDesigning in ComponentState) = False then
  begin
    Clicked := True;
    Repaint;
  end;
end;
procedure TMenuButton.MouseUp;
begin
  if (csDesigning in ComponentState) = False then
  begin
    Clicked := False;
    Repaint;
  end;
end;
So, aber nun führt das dazu, das in meinem Programm jeder Klick an meinen MenuButton geht. Dh wenn ich zB auf das X der Form klicke, dann wird der Button geklickt!

Wie verhinder ich das, bzw was hab ich falsch gemacht und was muss ich ändern?

Edit: Haeh? Nun is das Problem plötzlich weg...dabei hab ich daran eig nix geändert!
Nagut, Problem gelöst wies aussieht, sry ^^
Edit2: Nun gehts plötzlich wieder nichmehr! ?!?! wasn da los nun bin ich verwirrt!

Also tritt irgendwie nur manchmal auf...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

  Alt 2. Jun 2007, 16:25
Hallo,

du solltest nur die von TControl geerbten Methoden Delphi-Referenz durchsuchenMouseDown und Delphi-Referenz durchsuchenMouseUp überschreiben. Dabei darfst du allerdings den Aufruf der geerbten Methoden nicht vergessen, da ansonsten ein über OnMouseDown/OnMouseUp verbundener Eventhandler abgeklemmt wird.

Delphi-Quellcode:
type
  TMenuButton = class (TCustomPanel)
  [...]
  protected
    procedure MouseDown (Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseUp (Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
  end;

procedure TMenuButton.MouseDown (Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  Clicked := True;
  Invalidate;
end;

procedure TMenuButton.MouseUp (Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited;
  Clicked := False;
  Invalidate;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#3

Re: Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

  Alt 2. Jun 2007, 16:34
Hehe gut da hätte ich auch drauf kommen können, aber was ist denn generell an meiner Methode schlechter? Und warum funzt sie nich immer? (meistens tut sie das tritt nur selten auf das Problem)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

  Alt 2. Jun 2007, 16:44
Zitat von .chicken:
Hehe gut da hätte ich auch drauf kommen können, aber was ist denn generell an meiner Methode schlechter? Und warum funzt sie nich immer? (meistens tut sie das tritt nur selten auf das Problem)
Durch das Überschreiben der Behandlungsroutinen für WM_LButtonDown und WM_LButtonUp hast du wichtige Überprüfungen und Initialisierungen in TControl lahmgelegt, was zu dem beschriebenen Verhalten führen könnte. MouseDown und MouseUp sind die von Borland vorgesehenen Routinen für Erweiterungen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#5

Re: Frage zu WM_LBUTTONDOWN und WM_LBUTTONUP

  Alt 2. Jun 2007, 17:01
Aso ok

Edit: Da hätt ich fast das Danke vergessen ^^
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz