سؤال حول الدورة وبلأخص درس رقم اثنين... امر.. form2.ShowModal
#2
بسم الله الرحمن الرحيم
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 - بواسطة STRELiTZIA - 16-12-2008, 11:43 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم