Какая разница между методами формы hide, close? Где и когда они используются?
Сообщение отредактировано: sheka -
![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() ![]() |
![]() |
sheka |
![]()
Сообщение
#1
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Какая разница между методами формы hide, close? Где и когда они используются?
Сообщение отредактировано: sheka - |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
это не свойства.
а разница - скрыть (спрятать) форму или закрыть. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
sheka |
![]()
Сообщение
#3
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Очепятался.
![]() Логично. ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Исправил. Исправляй еще раз. Это не события, это методы...Цитата А более подробно? Первоисточник:TControl.Hide TCustomForm.Close |
sheka |
![]()
Сообщение
#5
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Это уже 3й раз
![]() Т. е. это означает, что метод выполняется по событию(или как-то так)? Сообщение отредактировано: sheka - |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Это означает, что при вызове метода Hide выполняется обработчик события OnHide, а при вызове метода Close - обработчик события OnClose.
P.S. Уточнение. Скорее, не при вызове, а после того, как метод произведет некоторые действия. Скажем, если вызван метод Hide - то произойдет то, что должно произойти: свойство Visible перебросится в False. А вот когда это произойдет - вызовется обработчик OnHide. То же самое и с закрытием формы. Либо ты напрямую в коде повесишь на кнопку Form1.Close, либо попытаешься закрыть форму нажатием на крестик или Close в меню формы (которое Alt+F4). В любом из этих случаев будет вызван метод Close, что инициирует срабатывание события OnClose. |
sheka |
![]()
Сообщение
#7
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Все равно не понятно: если form.close, а потом form.show, то форма показывается, при чем данные которые были в ней записаны, те и остаются. Значит это есть одно и то же, а различие состоит только для главной формы?
|
volvo |
![]()
Сообщение
#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 к той форме, которая инициализирована вместе с основной, при старте программы. Как же ты хочешь, чтоб она полноценно удалилась? |
volvo |
![]()
Сообщение
#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... |
buy zithromax without prescripti |
![]()
Сообщение
#10
|
Гость ![]() |
Viagra India Pharmacy
|
how long does it take for gabape |
![]()
Сообщение
#11
|
Гость ![]() |
levitra boutique
|
nishaknapp |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 155 Пол: Мужской Репутация: ![]() ![]() ![]() |
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
|
![]() ![]() |
![]() |
Текстовая версия | 7.04.2025 5:06 |