delphi4arab منتديات دلفي للعرب
سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal (/showthread.php?tid=328)



سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - AL-MOB4RM3G - 15-12-2008

السلام عليكم ورحمة الله

اخواني هنا سؤال حول الدورة وبلأخص درس رقم اثنين...

اولاّ

ما مهمت هذا الكود form2.ShowModal; ؟
وما الفرق بينه وبين form2.visible:= true; ؟

ثانيا...
وجهتني مشكلة مع form2.ShowModal; وهي انها تغلق البرنامج الى النفذة الثانية... يعني لا استطيع الرجوع الى فورم 1 الّى اذا اغلقت فورم 2... وللعلم هذه المشكلة لا تظهر عندي اذا استخدمد ال form2.visible := true; والله تعلى اعلم... يعني كيف احل هذه المشكلة بارك الله لكم ؟

بلإضافة الى سؤال بجانب الموضوع...
وهو متى سيأتي ال HomeWork الثاني ومتى سيأتي حل ال HomeWork الأول ...

نعم ... بارك الله بكم مرة اخرى.


سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - STRELiTZIA - 16-12-2008

بسم الله الرحمن الرحيم
Form.ShowModal : هي دالة موجودة في وحدة Forms لاستدعاء و إظهار نافذة مشروع، دون السماح للرجوع لنافتها الأساسية بالنقر خارجها.


PHP كود :
function TCustomForm.ShowModal: Integer;
var
  
WindowList: Pointer;
  
SaveFocusCount: Integer;
  
SaveCursor: TCursor;
  
SaveCount: Integer;
  
ActiveWindow: HWnd;
begin
  CancelDrag
;
  if 
Visible or not Enabled or (fsModal in FFormState) or
    (
FormStyle = fsMDIChild) then
    raise EInvalidOperation
.Create(SCannotShowModal);
  if 
GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
  
ReleaseCapture;
  
Application.ModalStarted;
  try
  Include(
FFormState, fsModal);
  
ActiveWindow := GetActiveWindow;
  
SaveFocusCount := FocusCount;
  
Screen.FSaveFocusedList.Insert(0, Screen.FFocusedForm);
  
Screen.FFocusedForm := Self;
  
SaveCursor := Screen.Cursor;
  
Screen.Cursor := crDefault;
  
SaveCount := Screen.FCursorCount;
  
WindowList := DisableTaskWindows(0);
  try
    
Show;
    try
      
SendMessage(Handle, CM_ACTIVATE, 0, 0);
      
ModalResult := 0;
      
repeat
        Application
.HandleMessage;
        if 
Application.FTerminate then ModalResult := mrCancel else
          if 
ModalResult <> 0 then CloseModal;
      
until ModalResult <> 0;
      
Result := ModalResult;
      
SendMessage(Handle, CM_DEACTIVATE, 0, 0);
      if 
GetActiveWindow <> Handle then ActiveWindow := 0;
    finally
      
Hide;
    
end;
  finally
    if 
Screen.FCursorCount = SaveCount then
      Screen
.Cursor := SaveCursor
    
else Screen.Cursor := crDefault;
    
EnableTaskWindows(WindowList);
    if 
Screen.FSaveFocusedList.Count > 0 then
    begin
      Screen
.FFocusedForm := Screen.FSaveFocusedList.First;
      
Screen.FSaveFocusedList.Remove(Screen.FFocusedForm);
    
end else Screen.FFocusedForm := nil;
    if 
ActiveWindow <> 0 then SetActiveWindow(ActiveWindow);
    
FocusCount := SaveFocusCount;
    
Exclude(FFormState, fsModal);
  
end;
  finally
    
Application.ModalFinished;
  
end;
end; 



Form.Show : هي إجرائية إظهار نافذة دون تحديدات النقر السابقة الذكر.


PHP كود :
procedure TCustomForm.Show;
begin
  Visible 
:= True;
  
BringToFront;
end; 


Visible := True : هي إعطاء خاصية Visible قيمة Boolean إما True أو False يمكننا استعمالها لإظهار نافذة كانت مخفية مسبقا.


الغرض من استعمال ShowModal : هو عدم السماح بالرجوع إلى النافذة التي استدعيت منها بالنقر خارجها إلا بإغلاقها، يعني إذا أردت أن لا تختفي نوافذ معينة من مشروعك وراء النوافذ التي استدعيت منها استعمل ShowModal.


بالتوفيق إن شاء الله


سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - AL-MOB4RM3G - 16-12-2008

نعم بارك الله فيك اخي على الإجابة...
يعني معليش سامحني فأنا كثير السؤال والله المستعان Smile


سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - STRELiTZIA - 16-12-2008

إقتباس :يعني معليش سامحني فأنا كثير السؤال والله المستعان
كل سؤال مفيد و غير مكرر سنحاول الاجابة عليه اخي العزيز بقلب رحب Smile حتى لو تأخرنا قيلا في و ضع الاجابة - مشاغل الحياة

بالفائدة ان شاء الله


سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal - nabilkeb - 16-12-2008

strelitzia كتب :كل سؤال مفيد و غير مكرر سنحاول الاجابة عليه اخي العزيز بقلب رحب Smile حتى لو تأخرنا قيلا في و ضع الاجابة - مشاغل الحياة

بالفائدة ان شاء الله

بارك الله فيك أخينا ، و جزاك الله ألف خير .