PDA

View Full Version : سوال: در مورد کشیدن اتوماتیک یک شی



kamran_14
جمعه 06 اسفند 1389, 18:10 عصر
سلام
وقتی خاصیت dragmode شی با Automatic مقداردهی می شه هنگام کشیدن شی شکل cursor ، NoteDrop می شه
مشکل کد من چیه؟


var
Form1: TForm1;
ox,oy:Integer;
d:Boolean;
implementation

{$R *.dfm}

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source is TLabel;
Label1.Left:=x-ox;
Label1.Top:=y-oy;
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ox:=x;
oy:=y;
end;

من نمی خوام از حالت دستی استفاده کنم .
در ضمن می شه در مورد این خط هم توضیح بدین

Accept := Source is TLabel;
ممنون

tdkhakpur
جمعه 06 اسفند 1389, 23:08 عصر
وقتی خاصیت dragmode شی با Automatic مقداردهی می شه هنگام کشیدن شی شکل cursor ،NoteDrop می شه
مشکل کد من چیه؟


برای اینکه این یک کار غیر استاندارد هست و باید نوع DragKind از جنس dkDock باشه.

kamran_14
شنبه 07 اسفند 1389, 12:49 عصر
سلام

باید نوع DragKind از جنس dkDock باشه.
می شه توضیح بیشتر بدین
آخه وقتی نوع DragKind از جنس dkDock باشه.
اون موقع شی ءی که کشیده می شه هنگام رها کردن اون شی داخل یک پنجره ی دیگه قرار می گیره.

tdkhakpur
یک شنبه 08 اسفند 1389, 00:59 صبح
آخه وقتی نوع DragKind از جنس dkDock باشه.
اون موقع شی ءی که کشیده می شه هنگام رها کردن اون شی داخل یک پنجره ی دیگه قرار می گیره.

اون خاصیت که میگید چرا علامت غیر استاندارد ظاهر میشه دلیلش این هست که به شما نشان بده در حالت استاندارد برنامه نویسی این امکان وجود نداره اما اگر مقصوتان این هست که بخواهید محل شی یا هر کاری که قصد انجام رو هنگام درگ کردن شی دارید میتوانید داخل ondragover بنویسید.

kamran_14
یک شنبه 08 اسفند 1389, 14:03 عصر
جوابه سوال منو ندادید
سوال من اینه
وقتی خاصیت Dragmod با Automatic مقداردهی می شه و خاصیت DragKind با dkDock مقدار دهی می شه هنگام رها کردن شی، شی در یک پنجره ی کوچک آن شی نمایش داده می شه
برای رفع این مشکل (زیرش خط کشیدم)چه باید کرد؟
ممنون
از کمکتون

kamran_14
یک شنبه 08 اسفند 1389, 16:41 عصر
سلام
حالا این کد صحیحه برای حالت اتوماتیک

var
Form1: TForm1;
ox,oy:integer;
d:boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Button1.Left:=x-ox+Button1.Left;
Button1.Top:=y-oy+Button1.top;
end;

procedure TForm1.Button1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
d:=false;
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ox:=x;
oy:=y;
end;
procedure TForm1.Button1StartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
d:=true;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
d:=false;
end;
end.