delphi4arab منتديات دلفي للعرب

نسخة كاملة : سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله

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

اولاّ

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

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

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

نعم ... بارك الله بكم مرة اخرى.
بسم الله الرحمن الرحيم
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.


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

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

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

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