الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عمل صورة (مثل الأيقونة) تتحرك على الفورم

مغلق
بدأه Red star في 2 مارس 2003 · 2 رد · 832 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا أيها الأصدقاء . . .

أريد عمل صورة (مثل الأيقونة) تتحرك على الفورم الى المكان

الذي أريده عند الضغط والسحب المستمر عليها .

أي عمل رمز مثل الرموز الموجودة على سطح المكتب .

أرجو ارشادي بالكــود المناسـب أو وضع مثال صغير على ذلك .

وجازاكـم الله خيراً على مـساعدتي . .

صديقكـم المحتاج : ريد سـتار

#2

السلام عليكم

العمليه التي تريدها اسمها Drag & Drop . أظن انك لاحظت وجود عده خواص بهذا الاسم DragX مثل DragMode,DragCursor,DragType بالاضافه الى وجود عده Events لها علاقه بـ Drag . هذه هي الاشياء التي تهمنا هنا :D

قبل أن تقرأ ما سأكتبه في الاسفل القي نظره على المثال الموجود في Delphi help تحت عنوان OnDragOver, OnDragDrop example ستجده اثناء البحث عن OnDragOver او OnDragDrop .حاول تفهم المثال وتغيره بما يتناسب مع طلبك

في المثال تعامل مع Label بانه هو الـ dropped control وفي سؤالك سيكون TImage هو .... , في المثال تعامل مع ListBox بانها الـ control الذي ستتم عمليه Drag & Drop اليه , بينما في سؤالك سيكون Form هو ... ( النقط ... تعبر عن كلام محذوف يفهم من سياق الكلام ).

اتمنى ان كلامي يكون واضح ( أعلم ان طريقتي في الشرح سيئه ).

هذا المثال كاملا .

// Set DragMode property for Image control to dmAutomatic

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);

begin

if Source is TImage then

 begin

  TImage(Source).Left := X;

  TImage(Source).Top := Y;

 end;



end;



procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;

  State: TDragState; var Accept: Boolean);

begin

Accept := Source is TImage;

end;

ان كنت تريد العمليه يدويا manual فعليك بتغيير الخاصيه DragMode الى dmManual . طبعا لابد من اضافه كود للقيام بالعمليه. اضافه للكود السابق عليك اضافه ما ياتي :

على افتراض وجود Image1 .

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

begin



 Image1.BeginDrag(True);

في الكود السابق ستتم العمليه باستخدام ال mouse فقط يمكن اضافه احد محارف لوحه المفاتيح كـ shift او ctrl

 if ssCtrl in Shift then

  Image1.BeginDrag(True);

end;
#3

شــكرا لمســاعدتك أخي(f) (f)kernel80 ســوف أجربه وأخبرك .

وشكرا لاهتمامك مرة أخرى :D:D.

هذا الموضوع مغلق.

مواضيع مشابهة