Re[2]: ошибка в ActionMainMenuBar при работе с MDIChild окна
От: SergIG  
Дата: 06.02.03 07:54
Оценка:
А>>В ActionMainMenuBar при нажатии на кнопки сворачивания и закрытия MDI окна в обоих случаях срабатывает FormClose. Но мне то окно <B>ЗАКРЫВАТЬ</B> не нужно!!!!

ST>Вот кусок из TCustomForm:


ST>
ST>procedure TCustomForm.Close;
ST>var
ST>  CloseAction: TCloseAction;
ST>begin
ST>  if fsModal in FFormState then
ST>    ModalResult := mrCancel
ST>  else
ST>    if CloseQuery then
ST>    begin
ST>      if FormStyle = fsMDIChild then
ST>        if biMinimize in BorderIcons then
ST>          CloseAction := caMinimize else
ST>          CloseAction := caNone
ST>      else
ST>        CloseAction := caHide;

ST>      DoClose(CloseAction); // Это сгенерит эвент OnClose

ST>      if CloseAction <> caNone then
ST>        if Application.MainForm = Self then Application.Terminate
ST>        else if CloseAction = caHide then Hide
ST>        else if CloseAction = caMinimize then WindowState := wsMinimized
ST>        else Release;
ST>    end;
ST>end;
ST>


ST>Попробуйте проверить CloseAction на предмет caMinimize. Подумайте также насчет того, чтобы перенести код из OnClose в OnDestroy.


Все хорошо, все замечательно ... но почему-то не работает...
В TChildForm.FormClose только Action := caFree прописано.

Покопался в unit ActnMenus (Borland Delphi Visual Component Library ) ; там такой код —


procedure TInternalMDIAction.ExecuteTarget(Target: TObject);
begin
  case MDIAction of
    maActivate: SendMessage(GetParent(Form.Handle), WM_MDIACTIVATE, Form.Handle, 0);
    maClose: Form.Close;
    maRestore: SendMessage(GetParent(Form.Handle), WM_MDIRESTORE, Form.Handle, 0);
    maMinimize: Form.Close;
  end;
end;


Почему maClose: Form.Close; и maMinimize: Form.Close ?
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.