доступ к кнопкам на заголовке. [решено]
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
доступ к кнопкам на заголовке. [решено]
Если кратко, то мне надо обеспечить выполнение диалога сохранения при закрытии главной формы с помощью кнопки на заголовке.
Последний раз редактировалось Лекс Айрин 06.06.2013 17:04:59, всего редактировалось 1 раз.
В инспекторе берете (например) Form1.TForm1, вешаете свой обработчик на OnClose. Например:
(Если я правильно вас понял.)
Код: Выделить всё
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
// Обработка закрытия программы на случай, если SMC не был отключен
begin
if SMCConnected then begin
Application.ProcessMessages;
SMCSetTorque(gMotorNum,FALSE); // Отключаем Torque
Delay(50);
SMCDisconnect; // Отключаем SMC
end;
end; (Если я правильно вас понял.)
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
trengtor, понятно... то-есть, нужно просто обработчик перенести с onDestroy на onClose... попробуем-с
Спасибо.... не знаю, правда, что делать с CloseAction, но и без него все работает отлично
Спасибо.... не знаю, правда, что делать с CloseAction, но и без него все работает отлично
Да, на OnClose можно вешать типа такого:
Код: Выделить всё
procedure TfMain.actExitExecute(Sender: TObject);
var DlgSelected: integer;
begin
if actFileSave.Enabled
then // если действие записи доступно, значит были изменения и нужно сделать запрос на их сохранение
begin
DlgSelected := MessageDlg('В программе уже есть измененный проект.'
+ #13#10
+ 'Сохранить изменения перед выходом?',
mtConfirmation,
[mbYes,mbCancel], 0);
if DlgSelected = mrYes then SaveToFile;
end;
Application.Terminate;
end;- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
resident, спасибо, я все сделал. Мне главное, было понять где глюк... а то я в проге уже кучу текста потерял -- противная привычка жать на крестик... Зато косяк выловил))
Лекс Айрин писал(а):не знаю, правда, что делать с CloseAction
В данном случае можно забить.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
trengtor, собственно, так я и поступил 
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Вот как раз в данном случае хорошим тоном будет не забить, а предусмотреть режим ДаНетОтмена, где Да — Сохранить, Нет — не сохранять, Отмена — отменить закрытие (CloseAction := caNone).
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Иван Шихалев, это есть в самом обработчике... ну, разве кроме отмены закрытия... но это мне просто пока не надо.
надо все же будет озаботиться... так, на всякий случай. Спасибо за консультацию, принцип я понял.
надо все же будет озаботиться... так, на всякий случай. Спасибо за консультацию, принцип я понял.
Последний раз редактировалось Лекс Айрин 06.06.2013 19:02:31, всего редактировалось 1 раз.
Для отмены закрытия надо обрабатывать событие OnCloseQuery.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
svk12 писал(а):Для отмены закрытия надо обрабатывать событие OnCloseQuery.
Кстати, да. Так правильнее.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Иван Шихалев писал(а):Кстати, да. Так правильнее.
Так завтра и сделаю... мне же проще будет.
ЗЫ; не думал, что тут такое обсуждение будет
