![]() |
|
جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow (/showthread.php?tid=5994) |
جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 السلام عليكم ورحمة الله وبراتة لدي نافذة وقد اعطيتها الخاصية BroderStyle=bsNone المراد هو ان اجعل هذا الفورم يكون في مقدمة الونافذ في برنامجي فقط حيث يوجد عدة نوافذ في هذا البرنامج وأريـ ـد لهذا الفورم ان يكون في مقدمتها دوماً ولا يكون في مقدمة البرامج الآخرى السؤال الآخر .. ابحث عن الحدث خاص بتحريك النافذة أي عندما اقوم بنقل النافذة من مكان إلى آخرى على الشاشة يتم حدث .. كمثال OnMoveWindow وإن لم يكن موجود كيف اعمل مثل هذا الحدث ^^ وشكراً لحسن القراءة جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - Lam.Abdeldjalil - 03-03-2014 و عليكم السلام ورحمة الله وبركاته كود : المراد هو ان اجعل هذا الفورم يكون في مقدمة الونافذ في برنامجي فقطإقتباس :ابحث عن الحدث خاص بتحريك النافذة أي عندما اقوم بنقل النافذة من مكان إلى آخرى على الشاشة يتم حدث كود : procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE = $F012;
begin
if Button = mbLeft then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;كود : http://stackoverflow.com/questions/10921093/move-form-without-border-styleجعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 أوه ^^" .. كنت اضن أن formStyle=fsStayOnTop تعمل على حميع البرامج عذراً على هذا السؤال .. وشكراً على الاجابة لكن ماذا عن إذا كنت أريـ ـد تحرك النافذة الرئيسية وجعل النوافذ الاخرى تتحرك معها .. لذلك قصدت الحدث OnMoveWindow كمثال .. لدي نافذتين .. النافذة الرئيسية تملك إطار اما الآخرى لا تملك ايطار .. وانا اريـ ـد عندما اقوم بتحرك النافذة الرئيسية تتحرك النافذة اللتي لا تملك إطار معها جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - Lam.Abdeldjalil - 03-03-2014 مثال (Form1 هي الرئيسية ) : كود : TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
procedure WMMove(var Message: TMessage) ; message WM_MOVE;
public
iIniLeft,iIniTop: integer;كود : procedure TForm1.FormShow(Sender: TObject);
begin
iIniLeft:=Form2.Left-left;
iIniTop:=Form2.Top-Top;
end;
procedure TForm1.WMMove(var Message: TMessage);
begin
Form2.Left:=iIniLeft+TWMMove(Message).XPos;
Form2.Top:=iIniTop+TWMMove(Message).YPos;
end;جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 شكراً اخي على الكود .. يعمل بكفائة لكن هذا يعمل مع Windows .. فقط ؟ وكذلك كيف اعرف طرق التعامل مع النظام مثل هذه الحالة ؟ جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 بالنسبة للمثال الذي كتبت .. عندما اقوم بتشغيل البرنامج .. تظهر رسالة خطاء تحتوي : PHP كود : Access violation at address 005D86B4 in module 'project.exe'. Read of address 0000001C. PHP كود : procedure TCustomForm.SetTop(Value: Integer);علماً ان الخطاء يظهر وقت تنفيذ البرنامج فقط .. ما سبب الخطاء .. وشكراً قمت بتجربة الكود على D7 , D XE4 ونفس الخطاء يظهر جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 وجدت الاجابة هنا : PHP كود : http://delphi.about.com/od/windowsshellapi/a/dragnocaption.htm شبيهي بالمثال الذي ذكرت لكن على ما يبدو ان النوع المستعمل في الدالة مختلف عن ما ذكرت لكني إلى الان لا اعرف سبب الخط الذي حدث لي مع مثالك جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 03-03-2014 قمت بتبديل الدالة إلى : PHP كود : procedure WMMove(var Msg: TWMMoving) ; message WM_MOVING; جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - Lam.Abdeldjalil - 04-03-2014 السلام عليكم إقتباس : لكن هذا يعمل مع Windows .. فقط ؟نعم خاص بـ Windows فقط كود : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632631%28v=vs.85%29.aspx )
جعل الفورم في مقدمة النوافذ و تحريكها مثل OnMoveWindow - ALmuhhnad - 05-03-2014 إقتباس :هل تخلصت من رسالة الخطأ ؟نعم عندما قمت بتغيير WM_MOVE إلى WM_MOVING .. لم يظهر الخطاء على ما يبدو ان له طريقة استعمال خاصة او انه يوجد Bug |