А>>В 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 >>