Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как програмно нажать кнопку закрытия окна (крестик)? / 8 сообщений из 8, страница 1 из 1
27.04.2005, 17:54
    #33039025
sanya_tir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
Как програмно нажать кнопку закрытия окна? При использовании release, форма возвращает значение (на котором стоит курсор в гриде), а при нажатии крестика возвращается ноль. Собственно хочу повесить, на ESC нажатие этой кнопки (закрытия окна).
Спасибо.
...
Рейтинг: 0 / 0
27.04.2005, 18:01
    #33039043
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
при нажатии крестика наступает событие queryUnload
...
Рейтинг: 0 / 0
27.04.2005, 18:06
    #33039059
sanya_tir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
а почему тогда thisform.queryunload не закрывает форму?
...
Рейтинг: 0 / 0
27.04.2005, 18:19
    #33039097
Владимиr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
thisform.release не подходит?
...
Рейтинг: 0 / 0
27.04.2005, 18:29
    #33039136
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
sanya_tirКак програмно нажать кнопку закрытия окна?
Если имеется в виду "крестик" в правом верхнем углу, то никак. Нет такой возможности. Однако обычно форму закрывают через метод самой формы Release()

ThisForm.Release()

Нажатие на "крестик" инициирует событие формы QueryUnload(). Если в нем дать команду

NODEFAULT

то форма закрыта не будет. При закрытии формы через Release событие QueryUnload игнорируется.

sanya_tirПри использовании release, форма возвращает значение (на котором стоит курсор в гриде), а при нажатии крестика возвращается ноль.
На самом деле, если речь идет о модальной форме, то в обоих случаях будет возвращено одно и то же значение. Вероятно, перед тем как использовать Release, Вы сделали что-то еще, что и обеспечило возврат нужного значения. Кстати, каким образом Вы получили это значение?

sanya_tirСобственно хочу повесить, на ESC нажатие этой кнопки (закрытия окна).
Для этого на форму кладут обычную кнопку (CommandButton) и устанавливают ее свойство:

Command1.Cancel = .T.

При нажатии Esc сработает событие Click() этой кнопки.

В один момент времени на форме не может быть нескольких кнопок с этим свойством. Точнее, в этом случае при нажатии на Esc сработает событие Click() только одной из них.
...
Рейтинг: 0 / 0
27.04.2005, 22:18
    #33039420
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
На самом деле, при нажатии "крестика" на заголовке окна формы отрабатывает примерно такой код:
IF THISFORM.QueryUnload()
THISFORM.Release()
ENDIF
Тоже самое можете сделать и сами, например, при нажатии своей программной кнопки.
С уважением, Алексей.
...
Рейтинг: 0 / 0
28.04.2005, 09:24
    #33039720
sanya_tir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
Спасибо Владимир. применил
Command1.Cancel = .T.
все путем :)
...
Рейтинг: 0 / 0
29.04.2005, 02:56
    #33041907
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как програмно нажать кнопку закрытия окна (крестик)?
Hi Aleksey-K!

> На самом деле, при нажатии "крестика" на заголовке окна формы отрабатывает примерно такой код:
> IF THISFORM.QueryUnload()
> THISFORM.Release()
> ENDIF

не понял... Не похоже на то - скорее тогда "просто" последовательно срабатывают QueryUnload(), Destroy(), Unload()... И отменить из QueryUnload закрытие можно по NODEFAULT но никак не по RETURN .F. - что следует из указанного кода. Да и Form.Release() НЕ вызывается - это вообще метод, а не обработчик события.

> Тоже самое можете сделать и сами, например, при нажатии своей программной кнопки.

А вот то что вышеуказанный код можно поместить в некую кнопку и тем самым "проэмулировать" до некоторой степени поведение кнопки закрытия формы - это чистая правда :) только для того чтобы эмуляция была корректной сам QueryUnload должен быть написан соответствующим образом - в частности там должны быть И NODEFAULT (для отмены закрытия по крестику) И RETURN .F. - для отмены закрытия из "эмуляции крестика".

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как програмно нажать кнопку закрытия окна (крестик)? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]