На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Вопрос
    Умные люди, подскажите как при нажатии на Х(Закрыть) появлялся бы
    messagedlg('Закрыть?',[mbOK,mbNo],0) и если No, то форма бы не закрывалась
      В событии OnClose формы запускай диалог, и если результат дилога mrNo поставь Action=caNone....
      Сообщение отредактировано: repairman -
        2repairman:
        Лучше конечно пользоваться событием TForm.onCloseQuery

        2Сергей:
        На TForm.onCloseQuery:

        IF MessageDlg('Закрыть?',[mbOK,mbNo],0)=mrNo then CanClose:=False;
          2Song:
          А чем лучше ?
          Ситуацию можешь привести ?
            На onCloseQuery копия экземпляра формы ещё не уничтожен в динамической области памяти. В случае, если обрабатывается onClose с Action:=caNone система восстанавливает образ заново (регенерует) по инфе, которая в этот момент находиися на вершине стёка (Подробней - в книге Рихтера).
            Т.е. я хотел сказать, что фиолетово в принципе, но если окно возможно не будет закрываться то лучше onCloseQuery, если же окно закроется в любом исходе то можно и onClose.
            Кроме того TForm.onCloseQuery - принятая норма среди программистов для обработчика закрытия для форм.
            Сообщение отредактировано: Song -
              А не проще перехватывать WM_CLOSE. Хотя onCloseQuery это и делает...
                Цитата VDen, 22.06.02, 10:17:54
                А не проще перехватывать WM_CLOSE. Хотя onCloseQuery это и делает...


                Грубейшая ошибка. Любоё сообщение в том числе и WM_CLOSE перехватывает приложение через обработчик сообщений (см. forms.pas) далее генерирует события onCloseQuery, onClose и потом Application.Terminate

                >> Не проще ли...

                Нет, не проще.
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0215 ]   [ 15 queries used ]   [ Generated: 17.05.24, 05:58 GMT ]