powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как програмно нажать кнопку закрытия окна (крестик)?
8 сообщений из 8, страница 1 из 1
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039025
sanya_tir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как програмно нажать кнопку закрытия окна? При использовании release, форма возвращает значение (на котором стоит курсор в гриде), а при нажатии крестика возвращается ноль. Собственно хочу повесить, на ESC нажатие этой кнопки (закрытия окна).
Спасибо.
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039043
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при нажатии крестика наступает событие queryUnload
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039059
sanya_tir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему тогда thisform.queryunload не закрывает форму?
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039097
Владимиr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thisform.release не подходит?
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #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
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039420
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, при нажатии "крестика" на заголовке окна формы отрабатывает примерно такой код:
IF THISFORM.QueryUnload()
THISFORM.Release()
ENDIF
Тоже самое можете сделать и сами, например, при нажатии своей программной кнопки.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #33039720
sanya_tir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Владимир. применил
Command1.Cancel = .T.
все путем :)
...
Рейтинг: 0 / 0
Как програмно нажать кнопку закрытия окна (крестик)?
    #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
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как програмно нажать кнопку закрытия окна (крестик)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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