Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi onClick und onMouseOver benutzen (https://www.delphipraxis.net/105837-onclick-und-onmouseover-benutzen.html)

sirius 1. Jan 2008 20:34

Re: onClick und onMouseOver benutzen
 
Oha (ich denke ich habs jetzt kapiert). Die Unterscheidung zwischen Bewegung und Click geht über 2 Flags (oder Boolean-Werte)
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    FOnButtonMove:Boolean;
    FOnButtonDown:boolean;
    FButtonX,FButtonY:integer;
    { Private-Deklarationen }
    procedure DoButton1Click;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DoButton1Click;
begin
  //"normale" Click-Methode
  showmessage('Click');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOnButtonMove:=false;
  FOnButtonDown:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not FOnButtonMove then DoButton1Click;
end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FOnButtonDown:=true; //oder: "ssshift in shift;"
  FButtonx:=mouse.CursorPos.x;
  FButtonY:=mouse.CursorPos.y
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FonButtonDown:=false;
  FOnButtonMove:=false;
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  FOnButtonMove:=FOnButtonDown;
  if FOnButtonMove then
  begin
    Button1.Left:=Button1.Left+mouse.CursorPos.x-FButtonX;
    Button1.Top:=Button1.top+mouse.CursorPos.y-FButtony;
    Fbuttonx:=mouse.CursorPos.x;
    FButtonY:=mouse.CursorPos.y;
  end;
end;

Diamondback2007 1. Jan 2008 20:35

Re: onClick und onMouseOver benutzen
 
wie wärs denn wenn du im OnClick überprüfst ob
der button verschoben wurde.
wenn ja dann nicht ausführen.

gruß

Privateer3000 2. Jan 2008 07:49

Re: onClick und onMouseOver benutzen
 
Besten Dank an alle!

Es ist alles im Lot


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz