доступ к кнопкам на заголовке. [решено]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

доступ к кнопкам на заголовке. [решено]

Сообщение Лекс Айрин » 06.06.2013 14:43:46

Если кратко, то мне надо обеспечить выполнение диалога сохранения при закрытии главной формы с помощью кнопки на заголовке.
Последний раз редактировалось Лекс Айрин 06.06.2013 17:04:59, всего редактировалось 1 раз.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: доступ к кнопкам на заголовке.

Сообщение trengtor » 06.06.2013 16:31:48

В инспекторе берете (например) 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;

(Если я правильно вас понял.)
Аватара пользователя
trengtor
новенький
 
Сообщения: 77
Зарегистрирован: 03.05.2013 08:57:43
Откуда: Москва

Re: доступ к кнопкам на заголовке.

Сообщение Лекс Айрин » 06.06.2013 17:04:16

trengtor, понятно... то-есть, нужно просто обработчик перенести с onDestroy на onClose... попробуем-с

Спасибо.... не знаю, правда, что делать с CloseAction, но и без него все работает отлично :D
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: доступ к кнопкам на заголовке.

Сообщение resident » 06.06.2013 17:10:27

Да, на 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;
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Лекс Айрин » 06.06.2013 17:22:42

resident, спасибо, я все сделал. Мне главное, было понять где глюк... а то я в проге уже кучу текста потерял -- противная привычка жать на крестик... Зато косяк выловил))
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: доступ к кнопкам на заголовке. [решено]

Сообщение trengtor » 06.06.2013 17:36:55

Лекс Айрин писал(а):не знаю, правда, что делать с CloseAction

В данном случае можно забить.
Аватара пользователя
trengtor
новенький
 
Сообщения: 77
Зарегистрирован: 03.05.2013 08:57:43
Откуда: Москва

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Лекс Айрин » 06.06.2013 17:48:05

trengtor, собственно, так я и поступил :mrgreen:
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Иван Шихалев » 06.06.2013 18:23:38

Вот как раз в данном случае хорошим тоном будет не забить, а предусмотреть режим ДаНетОтмена, где Да — Сохранить, Нет — не сохранять, Отмена — отменить закрытие (CloseAction := caNone).
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Лекс Айрин » 06.06.2013 18:55:16

Иван Шихалев, это есть в самом обработчике... ну, разве кроме отмены закрытия... но это мне просто пока не надо.

надо все же будет озаботиться... так, на всякий случай. Спасибо за консультацию, принцип я понял.
Последний раз редактировалось Лекс Айрин 06.06.2013 19:02:31, всего редактировалось 1 раз.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: доступ к кнопкам на заголовке. [решено]

Сообщение svk12 » 06.06.2013 19:02:25

Для отмены закрытия надо обрабатывать событие OnCloseQuery.
svk12
постоялец
 
Сообщения: 409
Зарегистрирован: 09.06.2008 18:42:47

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Иван Шихалев » 06.06.2013 21:55:29

svk12 писал(а):Для отмены закрытия надо обрабатывать событие OnCloseQuery.

Кстати, да. Так правильнее.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: доступ к кнопкам на заголовке. [решено]

Сообщение Лекс Айрин » 06.06.2013 22:08:58

Иван Шихалев писал(а):Кстати, да. Так правильнее.


Так завтра и сделаю... мне же проще будет.

ЗЫ; не думал, что тут такое обсуждение будет :oops:
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 251

Рейтинг@Mail.ru