Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: onClick und onMouseOver benutzen

  Alt 1. Jan 2008, 21:34
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;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat