IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Методы формы, hide, close
сообщение
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Какая разница между методами формы hide, close? Где и когда они используются?

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


это не свойства.
а разница - скрыть (спрятать) форму или закрыть.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Очепятался. smile.gif Исправил.
Логично. good.gif А более подробно? Мои поиски в инете не увенчались успехом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Исправил.
Исправляй еще раз. Это не события, это методы...

Цитата
А более подробно?
Первоисточник:
TControl.Hide
TCustomForm.Close
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Это уже 3й раз smile.gif)) Сразу же я исправил на методы, но потом зашел в ИДЕ и посмотрел, что там написано Events.
Т. е. это означает, что метод выполняется по событию(или как-то так)?

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Это означает, что при вызове метода Hide выполняется обработчик события OnHide, а при вызове метода Close - обработчик события OnClose.

P.S. Уточнение. Скорее, не при вызове, а после того, как метод произведет некоторые действия. Скажем, если вызван метод Hide - то произойдет то, что должно произойти: свойство Visible перебросится в False. А вот когда это произойдет - вызовется обработчик OnHide.

То же самое и с закрытием формы. Либо ты напрямую в коде повесишь на кнопку Form1.Close, либо попытаешься закрыть форму нажатием на крестик или Close в меню формы (которое Alt+F4). В любом из этих случаев будет вызван метод Close, что инициирует срабатывание события OnClose.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Все равно не понятно: если form.close, а потом form.show, то форма показывается, при чем данные которые были в ней записаны, те и остаются. Значит это есть одно и то же, а различие состоит только для главной формы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
если form.close, а потом form.show, то форма показывается, при чем данные которые были в ней записаны, те и остаются.
Неправда. Смотря как ты показываешь форму. Если так:

// (в файле DPR надо закомментировать создание второй формы при создании приложения.
// создавать будет форму только тогда, когда она понадобится)
procedure TForm1.ShowSecondFormClick(Sender: TObject);
begin
with TForm2.Create(Self) do
begin
Show;
end;
end;
, то будут показаны не те данные, которые были записаны при предыдущем показе, а те, которыми форма инициализируется. Если у тебя при старте формы в Edit записывается "1", а ты руками на уже стартовавшей форме изменишь это значение на "2", и потом закроешь/откроешь форму - то там опять (неожиданно, правда?) будет "1".

А ты наверняка применяешь Close к той форме, которая инициализирована вместе с основной, при старте программы. Как же ты хочешь, чтоб она полноценно удалилась?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






P.S. А теперь - твой случай, то есть, когда ты пытаешься закрыть/открыть форму, созданную через Application/CreateForm. Посмотри внимательно на описание параметров в обработчике OnClose
Видишь там параметр Action? А чуть ниже:
Цитата
If a form is an SDI child form, Action defaults to caHide.
заметил? То есть, фактически, дочерняя форма просто скрывается, не закрываясь. Закрытие формы возложено на Application, в его деструкторе форма закроется. Именно поэтому у тебя сохраняются все введенные данные. Если создать форму динамически - к ней тоже будет применен caHide, но при повторном создании экземпляр класса формы будет другой, поэтому форма поведет себя более адекватно. Но это утечка, ибо деструктор Application знать ничего не знает о вновь созданной форме, и позаботиться о корректном закрытии ее (при завершении приложения) не может, надо в OnClose при динамическом создании выставлять Action := caFree...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Viagra India Pharmacy
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






levitra boutique
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 155
Пол: Мужской

Репутация: -  0  +


Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. Baccarat: 4 Things People Should Know About This Game
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 25.04.2024 11:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name