Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  22:46[Войти] | [Зарегистрироваться]
Ответ на вопрос № 61703

29-04-2008 16:13
Добрый день!

Как при закрытие формы, можно узнать на какую пользователь нажел клавишу. Я заполняю переменую при нажатие каждой кнопки. При закрытие проверяю эту переменую. Но мне кажеться есть способо более элегантный.

Спасибо

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

01-05-2008 04:54 | Сообщение от автора вопроса
Спасибо как раз то что надо!

29-04-2008 19:53
>>> Как при закрытие формы, можно узнать на какую пользователь нажел клавишу.

Владимир Метальников:
>>> Будем исходить из предположения, что все-таки "кнопку".

Я, в свою очередь, выскажу предположение, что, всё-таки, нужна и не клавиша, и не кнопка, а "команда", по которой произошёл выход. Обычно это Ok и Cancel. Причём выход по одной "команде" может быть осуществлён разными способами. Например, выход по команде "Отмена" может быть осуществлён:
1. Кликом по своей кнопке "Отмена".
2. Нажатием клавиши Enter или Пробел, когда текущей является своя кнопка "Отмена.
3. Часто - нажатием клавиши Esc.
4. Кликом по кнопке с крестиком на заголовке формы.
5. Нажатием клавиш Alt-F4.
6. Через пункт "Закрыть" системного меню, если оно есть...

Я думаю, вряд ли интересно, каким именно образом закрыли форму. Главное - знать: по OK или по Cancel...
Форма может отображаться либо в модальном режиме (по ShowModal), либо в немодальном (по Show). В немодальном режиме - по Show форма отображается и программа продолжает выполненяться дальше. При отображении формы в модальном режиме программа входит внутрь ShowModal и не выходит из неё до тех пор, пока не будет закрыта форма. Диалоги, имеющие кнопки "Ok" и "Cancel", обычно отображаются в модальном режиме.
Форма имеет такое полезное свойство, как ModalResult...
Свойство - это такая штука, которая снаружи выглядит как переменная, но при её чтении или присвоении могут выполняться дополнительные действия...
Свойство ModalResult имеет тип TModalResult (см. help), который в конце концов, является Integer'ом. Для использования с ModalResult определено несколько констант, которыми и следует пользоваться (mrNone, mrOk, mrCancel и др.).
При отображении формы в модальном режиме ModalResult устанавливается в mrNone. При присвоении ModalResult любого значения, отличного от mrNone, форма закрывается и по значению ModalResult можно узнать, по какой команде произошло закрытие формы.
Присвоить это значение можно любым удобным способом, например, в обработчике OnClick кнопки. Однако есть более удобный способ. Кнопки тоже имеют свойство ModalResult. В кнопках это свойство выполняет следующую задачу: при клике по кнопке автоматически происходит присвоение значения ModalResult кнопки свойству ModalResult формы, на которой она лежит. Таким образом, присвоив в инспекторе объектов свойству ModalResult кнопки любого значения, отличного от mrNone, мы обеспечим закрытие формы при клике на этой кнопке без всяких обработчиков. При любых видах отмены, предусмотренных в системе, ModalResult формы принимает значение mrCancel, поэтому своей кнопке "Отмена" также удобно присвивать mrCancel. Кнопке "Ok" вполне логично присвоить значение mrOk... Также у кнопок есть свойства Default и Cаncel. При установке Default в True, эта кнопка будет срабатывать при нажатии Enter в любом месте формы (если это нажатие не обрабатывается кем-то другим). При установке Cаncel в True, эта кнопка будет срабатывать при нажатии Esc в любом месте формы (если это нажатие также не обрабатывается кем-то другим).
При отображении формы в немодальном режиме ModalResult ни на что не реагирует и его можно использовать как обычную переменную, присваивая ему те-же значения, что и в модальном режиме, но после этого закрывая форму явным вызовом метода Close.

P.S. Работающий пример, демонстрирующий применение вышеописанной методики, можно посмотреть здесь: »вопрос КС №49724«

29-04-2008 18:27
Как при закрытие формы, можно узнать на какую пользователь нажел клавишу.
Я заполняю переменую при нажатие каждой кнопки

Все-таки: "клавишу" или "кнопку" ? Это не совсем одно и то же :-)
Будем исходить из предположения, что все-таки "кнопку".
Если надо в момент закрытия проверять, какой элемент управления имел фокус,
то надо воспользоваться свойством ActiveControl формы. Только не будет работать,
если кнопки - SpeedButton, потому что этот элемент фокуса управления не получает.

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Вода мокрая или сухая?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования