با سلام خدمت همه بزرگان دلفی کار
یه سوال دارم اونم اینکه مثلاً موقعی که برنامه در حال اجراست چطور می شه یه شیئ مثل edit box رو با ماوس به جای دیگه منتقل کرد؟
ضمناً آیا توی گزارش هم میشه همچین کاری کرد؟
Printable View
با سلام خدمت همه بزرگان دلفی کار
یه سوال دارم اونم اینکه مثلاً موقعی که برنامه در حال اجراست چطور می شه یه شیئ مثل edit box رو با ماوس به جای دیگه منتقل کرد؟
ضمناً آیا توی گزارش هم میشه همچین کاری کرد؟
کد:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
move,move2:boolean;
fx,fy,fx2,fy2:integer;
implementation
{$R *.dfm}
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move:=true;
fx:=x;
fy:=y;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
move:=False;
move2:=false;
end;
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if(move2=true)then
begin
Form1.Label1.Left:=Form1.Label1.Left+(x-fx2);
Form1.Label1.Top:=Form1.Label1.Top+(y-fy2);
end;
end;
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move2:=true;
fx2:=x;
fy2:=y;
end;
procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move2:=false;
end;
procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move:=False;
end;
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if(move=true)then
begin
Form1.Edit1.Left:=Form1.Edit1.Left+(x-fx);
Form1.Edit1.Top:=Form1.Edit1.Top+(y-fy);
end;
end;
end.
به توابع
OnMouseDown
OnMouseUp
OnMouseMove
دقت کن.
برای دو تا شی (یه Label و یه Edit) این کد رو نوشتم.
با سلام خدمت همه
Admiral جان ازت خیلی ممنون البته هنوز امتحان نکردم امتحان می کنم و اگه جواب نداد سوالاتم رو ازت می پرسم.
با تشکر فراوان به امید دیدار
جناب Admiral ازت خیلی تشکر می کنم. دستت درد نکنه فدات کارمو حسابی راه انداختی.
خیلی ممنون
به امید دیدار
سلام
اگه منظورت رو درست متوجه شده باشم اون کدی که نوشتم کارت رو راه میندازه.
موفق باشی
قابلی نداشت