![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() В моей программе есть меню, в котором есть пункт выход, по нажатию на который программа выдает запрос "Сохранить файл?" и кнопки да, нет, отмена. Так вот, эта кнопка привязана также к событию закрытия формы Form Close.
Код:
procedure TfrmGL.FormClose(Sender: TObject; var Action: TCloseAction); begin N6Click(nil); end; |
#2
|
|||
|
|||
![]() потому что надот делать по другому.
по нажатию кнопки выход надо сделать только close; А вот в OncloseQuery надо сделать что-то типа: Код:
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := MessageDlg('Are you sure to close the program?', mtConfirmation,[mbYes,mbNo],0) = mrYes; end; |
#3
|
||||
|
||||
![]() Работает) Но потом пишет ошибку EStackOverflow with message 'Stack Overflow'.
Код следующий: Код:
procedure TfrmGL.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var Res: Integer; begin if not Saved then begin Res:=Application.MessageBox('Сохранить изменения ?', 'Предупреждение', MB_YESNOCANCEL); if Res=IDYes then begin N13Click(nil); Saved:=True; CanClose:=True; Application.Terminate; end else if Res=IDNo then begin CanClose:=True; Application.Terminate; end else if Res=IDCancel then begin CanClose:=False; Exit; end end; end; Код:
procedure TfrmGL.FormClose(Sender: TObject; var Action: TCloseAction); begin Close; end; |
#4
|
||||
|
||||
![]() Код:
procedure TfrmGL.FormClose(Sender: TObject; var Action: TCloseAction); begin Close; end; Также в предыдущем куске лишним является Application.Terminate . Программа итак закрывается, зачем несколько раз ей говорить закрыться? РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#5
|
||||
|
||||
![]() Понял. А как надо сделать? Application.Terminate убрал, теперь по нажатию "Отмена" работает. Когда нажимаю "Нет" ничего не происходит и окно опять вылетет диалоговое.
|
#6
|
||||
|
||||
![]() Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if not Saved then case Application.MessageBox('Сохранить изменения ?', 'Предупреждение', MB_YESNOCANCEL) of IDYes: begin {<Сохранить>} Saved:=True; CanClose:=True; end; IDNo: CanClose:=True; IDCancel: CanClose:=False; end; end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#7
|
||||
|
||||
![]() Спасибо)) Работает) Разобрался)
|