Форум: "Основная";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];
ВнизЗакрытие формы. Найти похожие ветки
← →
Lera (2005-11-08 14:35) [0]Здравствуйте, у меня по onShow вызывается процедура. По результатам ее работы нужно либо открывать форму, либо нет. Может быть кто-нибудь знает, как после попадания в FormShow сделать так, чтобы форма не открылась и выйти из FormShow. Заранее благодарю.
← →
umbra © (2005-11-08 14:42) [1]
if myproc then Visible := False;
или надо вообще приложение закрыть?
← →
Black Krok © (2005-11-08 14:55) [2]В этом случае будет исключение "Cannot change Visible in OnShow or OnHide"
Так в лоб не получится.
Можно послать сообщение
if myproc then
PostMessage(Handle,WM_CLOSE,0,0);
← →
umbra © (2005-11-08 15:00) [3]да и по смыслу вопрос о том, показывать форму или нет лучше решать в обработчике
OnCreate
← →
Lera (2005-11-08 15:00) [4]спасибо
← →
Ega23 © (2005-11-08 15:08) [5]Вообще-то лучше не на OnShow такое вешать....
← →
Anatoly Podgoretsky © (2005-11-08 15:13) [6]umbra © (08.11.05 15:00) [3]
Вопрос о показе лучше решать до Show
← →
umbra © (2005-11-08 15:24) [7]2 Anatoly Podgoretsky © (08.11.05 15:13) [6]
глубоко! есть над чем подумать :))
← →
Silver Alex © (2005-11-08 16:38) [8]<< PostMessage(Handle,WM_CLOSE,0,0);
а просто self.Close; не подходит?
← →
Leonid Troyanovsky © (2005-11-08 17:51) [9]
> Silver Alex © (08.11.05 16:38) [8]
> << PostMessage(Handle,WM_CLOSE,0,0);
> а просто self.Close; не подходит?
Нет.
Вариантов, собс-но: [2] vs [6].
Причем, необходимость применения первого вопиет о bad design.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2005-11-08 19:53) [10]umbra © (08.11.05 15:24) [7]
О результатах сообщи.
← →
ShiFT (2005-11-09 06:12) [11]а я бы сделал так:
// dpr
Application.ShowMainForm := false;
// unit
procedure TForm1.FormCreate(Sender: TObject);
begin
if not Proc then
Form1.Show
else
Application.Terminate;
end;
← →
Prohodil Mimo © (2005-11-10 01:18) [12]Lera (08.11.05 14:35)
у меня по onShow вызывается процедура
надо не на onShow вызывать процедуру, а вызывать процедуру, а уж из неё Show или ShowModal.
← →
Плохиш © (2005-11-10 01:24) [13]
> ShiFT (09.11.05 06:12) [11]
> а я бы сделал так:
> // unit
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> if not Proc then
> Form1.Show
> else
> Application.Terminate;
> end;
AV обеспечено.
← →
ShiFT (2005-11-10 05:57) [14]
> AV обеспечено.
из-за Application.ShowMainForm := false;
AV не вылетает.
Так как форма создаётся но не показывается. =)
если я не прав, то объясни почему будет AV.
← →
Prohodil Mimo © (2005-11-10 20:29) [15]Плохиш © (10.11.05 1:24) [13]
AV обеспечено.
только в том случае, если форма на тот момент ещё не создана. Но OnCreate выполняется уже после создания формы - следовательно никакого AV не будет.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c