Einzelnen Beitrag anzeigen

Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#1

So lange Linke Maustaste gedrückt

  Alt 10. Aug 2013, 14:02
hey,

ich habe in diesem Forum das hier gefunden:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
    FDown: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var Zahl: Cardinal;
begin
  Zahl := 0;
  FDown := true;
  while FDown do
    begin
      inc(Zahl);
      Label1.Caption := Format('%d',[Zahl]);
      Application.ProcessMessages;
    end;
end;

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

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

end.
und habe es einbisschen umgebaut:

Delphi-Quellcode:
procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   meinControl: TWinControl;
begin
 MDown:=true;
  if move=true then begin
 if (Sender is TWinControl) then
 meinControl := (Sender as TWinControl)
 else
 Exit;
 while MDown=true do
   begin
   meinControl.Left:=(Mouse.CursorPos.x-Form3.Left)+(Mouse.CursorPos.x-(meinControl.Left+Form3.Left));
   Form3.Refresh;
   end;

  end
  else
  Exit;
end;

procedure TForm3.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   MDown:=false;
end;
aber irgendiwe ist das eine endlosschleife, warum?

zusatz: ich will das das objekt, das bewegt werden soll, der maus folgtaber nicht an einer eck sondern so wie geklickt wurde

so wollte ich das lösen:
meinControl.Left:=(Mouse.CursorPos.x-Form3.Left)+(Mouse.CursorPos.x-(meinControl.Left+Form3.Left)); aber irgendwie will das nicht richtig funktionieren
  Mit Zitat antworten Zitat