:: Visual Foxpro, Foxpro for DOS
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Каратаев
Всё работает...

А без Hide?
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
Каратаев

Сообщений: 4091
Откуда: Алматы
Дата регистрации: 04.12.2001
Равиль
и отсюда можно предположить, что и крестик выполняет такую команду ..
Крестик, как раз выполняет именно QueryUnload()


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Каратаев
Равиль
и отсюда можно предположить, что и крестик выполняет такую команду ..
Крестик, как раз выполняет именно QueryUnload()

Кстати, да. Отсюда можно предположить, что он еще и что то типа "Hide" делает.




Исправлено 1 раз(а). Последнее : alex;, 04.02.25 12:59
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
Каратаев

Сообщений: 4091
Откуда: Алматы
Дата регистрации: 04.12.2001
alex;
А без Hide?
Без Hide() не сработает из-за модальности.


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Без Hide не вызывается Destroy.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
lemenev

Сообщений: 314
Дата регистрации: 23.06.2022
Очень интересный пример. Спасибо Равиль! Общими усилиями нашли два разных решения – alex; и Каратаева.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
akvvohinc

Сообщений: 4711
Откуда: Москва
Дата регистрации: 11.11.2008
lemenev
Общими усилиями нашли два разных решения – alex; и Каратаева.
Решение через RELEASE WINDOW корректным не назовешь.
При работе через имя формы (окна) нет гарантии, что закроется именно то окно, в котором выполнили эту команду - ведь имя окна в общем случае не уникально.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
akvvohinc

Сообщений: 4711
Откуда: Москва
Дата регистрации: 11.11.2008
Для второго способа достаточно так:
WITH Createobject('form1')
.Show(1)
ENDWITH
Define Class form1 As Form
Add Object cmdQuit As CommandButton With ;
Top=10, Left=10, Height=25, Caption = "Закрыть", Cancel = .T.
Procedure cmdQuit.Click()
= Thisform.Hide() AND Thisform.Destroy()
ENDPROC
Enddefine

Вместо QueryUnload(), если он не используется по назначению, можно сразу вызвать Destroy().



Исправлено 4 раз(а). Последнее : akvvohinc, 04.02.25 15:58
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
Равиль

Сообщений: 6713
Откуда: Уфа
Дата регистрации: 01.08.2003
Каратаев
Всё работает...
LOCAL oform
oform = Createobject('form1')
WITH oform
.Show(1)
ENDWITH
**************************
Define Class form1 As Form
Add Object cmdQuit As CommandButton With ;
Top=10, Left=10, Height=25, Caption = "Закрыть", Cancel = .T.
Procedure cmdQuit.Click()
Thisform.QueryUnload()
ENDPROC
PROCEDURE QueryUnload
ThisForm.Hide()
ThisForm.Release()
ENDPROC
Enddefine

Александр, увы - .Hide() только скрывает создавая визуальный эффект, что форма закрылась
а .Release() не срабатывает - Объект формы остается в памяти - вот иллюстрация :

With Createobject('form1')
.Show(1)
Wait Window .cTest + .Name
*!* и ее можно повторно отобразить
.Show(1)
Endwith
**************************
Define Class form1 As Form
cTest = "Жив Курилка !! "
Add Object cmdQuit As CommandButton With ;
Top=10, Left=10, Height=25, Caption = "Закрыть", Cancel = .T.
Procedure cmdQuit.Click()
Thisform.Hide()
Thisform.Release()
Endproc
Enddefine

ps и ее можно повторно отобразить
ps2 и еще - Крестик тоже не убивает объект - и опровергается мое предыдущее предположение ))


------------------
Тяжело согнать курсором муху с монитора ...




Исправлено 2 раз(а). Последнее : Равиль, 04.02.25 15:58
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
akvvohinc

Сообщений: 4711
Откуда: Москва
Дата регистрации: 11.11.2008
Равиль
Крестик тоже не убивает объект - и опровергается мое предыдущее предположение
Ну, это хотя бы логично, что как раз хорошо!
А то все так обрадовались, что кнопка закрыла окно, что слона-то и не заметили.



Исправлено 1 раз(а). Последнее : akvvohinc, 04.02.25 16:02
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
Равиль

Сообщений: 6713
Откуда: Уфа
Дата регистрации: 01.08.2003
akvvohinc
Равиль
Крестик тоже не убивает объект - и опровергается мое предыдущее предположение
Ну, это хотя бы логично, что как раз хорошо!
А то все так обрадовались, что кнопка закрыла окно, что слона-то и не заметили.

и так же поспешили обрадоваться решению alex:
Release Windows Form1

Увы, объект живучий :

With Createobject('form1')
.Show(1)
Wait Window .cTest + .Name
.Show(1)
Endwith
**************************
Define Class form1 As Form
cTest = "Жив Курилка !! "
Add Object cmdQuit As CommandButton With ;
Top=10, Left=10, Height=25, Caption = "Закрыть", Cancel = .T.
Procedure cmdQuit.Click()
*!* Thisform.Hide()
*!* *!* Thisform.Release()
*!* Thisform.Destroy()
Release Windows Form1
Endproc
Enddefine


------------------
Тяжело согнать курсором муху с монитора ...




Исправлено 1 раз(а). Последнее : Равиль, 04.02.25 16:11
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
akvvohinc

Сообщений: 4711
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
и так же поспешили обрадоваться решению alex:
Release Windows Form1
Ну, это уже и так понятно - ведь это почти тот же "крестик", только в профиль.
К тому же этот способ не гарантирует, что скроется именно это окно, а не какое-то другое с именем Form1.

Равиль
Увы, объект живучий
Фокс не обманешь!



Исправлено 1 раз(а). Последнее : akvvohinc, 04.02.25 16:16
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Я так и не понял. With создает скрытую переменную с ссылкой на Form1?
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
sphinx

Сообщений: 32785
Откуда: Екатеринбург
Дата регистрации: 22.11.2006
WITH ничего не создает, просто короче (и понятнее, как следствие) записи вызова нужного объекта формы.
Хотя Сергей может и поправит меня.

Как обращаться к объекту, создан ли он был - это немного другой вопрос.


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 04.02.25 17:29
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Объект есть, а DISPLAY OBJECTS его не отображает.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
Если сделать перед и после Show внутри With
test = _VFP.Forms("Form1")
DISPLAY OBJECTS
То чушь какая то
Часть текста скрыта
WITH Createobject('form1')
ACTIVATE WINDOW wBrowse
CLEAR
DISPLAY OBJECTS
.Show(1)
test = _VFP.Forms("Form1")
ACTIVATE WINDOW wBrowse
CLEAR
DISPLAY OBJECTS
ENDWITH
Define Class form1 As Form
Add Object cmdQuit As CommandButton With ;
Top=10, Left=10, Height=25, Caption = "Çàêðûòü", Cancel = .T.
Procedure cmdQuit.Click()
= Thisform.Hide() AND Thisform.Destroy()
ENDPROC
Enddefine


Цитата:

Object: TEST Priv O UNKNOWN TYPE

Class Tree:
UNKNOWN TYPE



Исправлено 6 раз(а). Последнее : alex;, 04.02.25 18:11
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
ssa

Сообщений: 13115
Откуда: Москва
Дата регистрации: 23.03.2005
О, сколько нам открытий чудных готовит просвещенья дух...
Кто-нить помнит такого товарища как Михаил Корнеев?
Так вот он еще в свои времена тему демонстрировал, а вы тут Америку открываете заново.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
alex;
Автор

Сообщений: 4073
Откуда: Москва
Дата регистрации: 23.11.2004
ssa
О, сколько нам открытий чудных готовит просвещенья дух...
Кто-нить помнит такого товарища как Михаил Корнеев?
Так вот он еще в свои времена тему демонстрировал, а вы тут Америку открываете заново.

Действительно, вот топик
https://forum.foxclub.ru/read.php?5,96960,page=1
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
akvvohinc

Сообщений: 4711
Откуда: Москва
Дата регистрации: 11.11.2008
alex;
Я так и не понял. With создает скрытую переменную с ссылкой на Form1?
Ссылку, которая используется в With создаёт CreateObject().
Она может быть предварительно сохранена в переменной или не сохранена (создаваться на лету) - в обсуждаемом случае это уже роли не играет.
Ratings: 0 negative/0 positive
Re: Закрыть форму по кнопке ..
sphinx

Сообщений: 32785
Откуда: Екатеринбург
Дата регистрации: 22.11.2006
LOCAL test as Object Не смотрел? Хотя вряд ли...


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Эта тема закрыта.

On-line: 54 (Гостей: 54)

© 2000-2025 Fox Club 
Яндекс.Метрика