و شكرا
كيف يمكن تحريك الفورم مع حركة الماوس ؟
يمكن ذلك بأن تقوم بوضع الكود التالي
procedure TForm.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToDrag:= True;
Dx:= X;
Dy:= Y;
end;
procedure TForm.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If ToDrag Then
Begin
TWinControl(Self).Left:= TWinControl(Self).Left+X-Dx;
TWinControl(Self).Top := TWinControl(Self).Top +Y-Dy;
End;
end;
procedure TForm.ImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToDrag:= False;
end;
شكرا على الرد و ساجرب الكود و ارد عليك
بارك الله فيك
السلام عليكم و رحمة الله و بركاته
اخ Barca قمت بتجربت الكود الذي تفضلت بكتابته و هو يعمل و لكنه يعتمد على حركة الimage اي ان الform تتحرك مع ال image و ليس مع الماوس .
الا اني قمت بتجربت طريقة ثانية و هي بوضع timer ثم كتبت فيه
procedure TForm1.Timer1Timer(Sender: TObject);
var
mypoint : Tmouse;
begin
form1.Left:= Mypoint.CursorPos.x;
form1.Top := Mypoint.CursorPos.y;
end;
طبعا عند التنفيذ تظهر لي رسالة تنبيه لان المتغير mypointer ليس لديه قيمة ابتدائية , الا ان هذا الكود يعمل المطلوب و بالتاكيد يوجد طرق اخرى خصوصا بالتعامل مع دوال الويندوز الا اني لا اعرفها .
و شكرا
جرب هذا الكود اخي
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Self.Handle, wm_SysCommand,$f012,0); Application.ProcessMessages; end;
بارك الله فيك يا ابو هاني , و راح اجرب الكود و ارد عليك
و شكرا
العزيز أبو هاني . . .
ما هي وظيفة التعليمة التالية بشكل عام ؟
Application.ProcessMessages;
و شكرا لك .
يمكن أن تضع التعليمات التي وضعتها لك في خصائص الفورم أي
procedure TForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToDrag:= True;
Dx:= X;
Dy:= Y;
end;
procedure TForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If ToDrag Then
Begin
TWinControl(Self).Left:= TWinControl(Self).Left+X-Dx;
TWinControl(Self).Top := TWinControl(Self).Top +Y-Dy;
End;
end;
procedure TForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToDrag:= False;
end;
اولا شكرا للرد و لكني اقصد بتحريك الفورم مع حركة الماوس ان تتحرك حتى عندما يتحرك الماوس خارج الفورم و ليس بالضرورة ان تتبع حركته و هو يمر فوقها ؟؟
و شكرا
هذا الموضوع مغلق.