maminb
پنج شنبه 08 اسفند 1387, 19:12 عصر
سلام دوستان. میخواستم بدونم چطور میتونم کاری کنم که وقتی در زمان اجرای برنامه، ترجیحا روی یک Button یا هر چیز دیگه ای کلیک کردیم، بتوانیم در هنگامی که هنوز کلید Mouse را نگه داشته ایم آن را روی فرم جا به جا کنیم؟
با تشکر.
AliReza Vafakhah
پنج شنبه 08 اسفند 1387, 20:07 عصر
از Top و Left استفاده کن
Hsimple11
پنج شنبه 08 اسفند 1387, 20:33 عصر
یه مثالش میشه شبیه این:
type
TForm1 = class(TForm)
Image1: TImage;
procedure ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
FDownX,
FDownY: Integer;
FDragging: Boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
type
TMoveCracker = class(TControl);
procedure TForm1.ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDownX := X;
FDownY := Y;
FDragging := True;
TMoveCracker(Sender).MouseCapture := True;
end;
procedure TForm1.ControlMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDragging then
with Sender as TControl do
begin
Left := X - FDownX + Left;
Top := Y - FDownY + Top;
end;
end;
procedure TForm1.ControlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if FDragging then
begin
FDragging := False;
TMoveCracker(Sender).MouseCapture := False;
end;
end;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.