![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие формы в OnShow
Bless © (2006-08-21 10:57:00)Как закрыть форму в случае возникновения исключения в обработчике события OnShow.
Т.е. что-то в духе
procedure TForm1.FormShow(Sender: TObject);
begin
try
ViewData;
except
?????????; //Close? PostMessage(handle, WM_CLOSE, 0, 0)?
raise;
end;{try}
end;
что поставить вместо "?????????"
Bless (2006-08-22 11:48:00) [1]Leonid Troyanovsky[13]>
Спасибо за пример.
<OFFTOP>
Пользуясь случаем, хотелось бы выразить вам свое уважение за толерантность к глупым вопросам и умение донести мысль до собеседника.
</OFFTOP>
Ketmar (2006-08-22 10:00:00) [2]> [40] Германн © (22.08.06 03:15)
ну делают они прямое ShowWindow(), если не ошибаюсь. какого ангела -- не ясно.
Германн (2006-08-22 03:15:00) [3]
> Ketmar © (22.08.06 03:11) [39]
>
> > [38] Германн © (22.08.06 03:03)
> страдали, но в другой форме, афаир. %-)
>
Страдали или нет - это другой вопрос. Но уж точно не этой болячкой!
Проверено на реальном проекте!
Ketmar (2006-08-22 03:11:00) [4]> [38] Германн © (22.08.06 03:03)
страдали, но в другой форме, афаир. %-)
Германн (2006-08-22 03:03:00) [5]
> Джо © (22.08.06 02:46) [36]
>
> Ну, вот вам еще пример из "реальной". Запуздыриваем иконку,
> форму прячем. Распуздыриваем — показываем :)
Ну да. Если "запуздыриваем", то с нас и спрос.
А вот ребята, которые писАли RxLib этой болячкой не страдали!
Ketmar (2006-08-22 02:48:00) [6]> [36] Джо © (22.08.06 02:46)
да, я об этом сразу подумал. даже написал было... но так же неинтересно. %-)
Джо (2006-08-22 02:46:00) [7]Ну, вот вам еще пример из "реальной". Запуздыриваем иконку, форму прячем. Распуздыриваем — показываем :)
Германн (2006-08-22 02:43:00) [8]
> Ketmar © (22.08.06 02:35) [34]
>
> > [33] Германн © (22.08.06 02:31)
> как будто с не-MDI это извратом быть перестаёт. %-)
>
Не, ну таки да. Но ты сам упомянул про MDI в ответ на Германн © (22.08.06 02:12) [31]А других ответов на сей вопрос ты пока что не дал. :-(
Ketmar (2006-08-22 02:35:00) [9]> [33] Германн © (22.08.06 02:31)
как будто с не-MDI это извратом быть перестаёт. %-)
Германн (2006-08-22 02:31:00) [10]
> Ketmar © (22.08.06 02:16) [32]
>
> > [31] Германн © (22.08.06 02:12)
> другой бы намекнул мне про MDI -- для поддержания трё...
> пардон, обмена мнениями. %-)
Наверно, это кто-то "совсем" другой :-)
Но регулярно скрывать, показывать, снова скрывать и снова показывать MDI форму - это изврат, имхо.
Ketmar (2006-08-22 02:16:00) [11]> [31] Германн © (22.08.06 02:12)
другой бы намекнул мне про MDI -- для поддержания трё... пардон, обмена мнениями. %-)
Германн (2006-08-22 02:12:00) [12]
> Ketmar © (22.08.06 02:00) [30]
>
> > [29] Германн © (22.08.06 01:56)
> уломал. %-) работа с базой. в программе несколько форм ввода.
> делать вкладками -- никаких ресурсов не хватит, да и не
> всегда удобно. маячащее же на экране главное окно идеологически
> вредно и объявлено диверсией. пример из моей реальной жизни.
> %-)
>
Другой бы на моём месте написАл бы что-то типа 1:1! Но я скромно молчу :-)
Ketmar (2006-08-22 02:00:00) [13]> [29] Германн © (22.08.06 01:56)
уломал. %-) работа с базой. в программе несколько форм ввода. делать вкладками -- никаких ресурсов не хватит, да и не всегда удобно. маячащее же на экране главное окно идеологически вредно и объявлено диверсией. пример из моей реальной жизни. %-)
Германн (2006-08-22 01:56:00) [14]
> Ketmar © (22.08.06 01:52) [28]
>
> > [27] Германн © (22.08.06 01:46)
> fmMain.Hide(); fmMain.Show(). как это применить -- придумай
> сам. %-))
>
Вот именно это я и просил тебя придумать для реальной жизни. Так что не сваливай на меня. :-)
Ketmar (2006-08-22 01:52:00) [15]> [27] Германн © (22.08.06 01:46)
fmMain.Hide(); fmMain.Show(). как это применить -- придумай сам. %-))
Германн (2006-08-22 01:46:00) [16]
> > [25] Германн © (22.08.06 01:18)
> > Не один раз для главной формы!?
> "Occurs when the form is shown (that is, when its Visible
> property is set to true)." (ц)
Ну это цитата из хэлпа. Причём хэлпа по TForm. А из реальной жизни? Про "главную форму приложения"?
Ketmar (2006-08-22 01:28:00) [17]> [25] Германн © (22.08.06 01:18)
> Не один раз для главной формы!?
"Occurs when the form is shown (that is, when its Visible property is set to true)." (ц)
> Не надо на него смотреть. Я стесняюсь
бывает. я своего тоже иногда. %-)
> Может быть "не продуманное" в ряде случаев, но не странное
так это я и назвал здесь "странным".
> что значит "почти"?
то, что на увольнение я уже подал, а нового ничего не предвидится. %-)
Германн (2006-08-22 01:18:00) [18]
> Ketmar © (22.08.06 01:09) [24]
>
> > [23] Германн © (22.08.06 01:02)
> давай начнём с того, хотя бы, что OnShow() может вызываться
> и не один раз. что само по себе должно родить смутные подозрения:
> "а то ли я делаю, запихивая туда какие-то инициализации?
> "
Не один раз для главной формы!?
>
> а порядок создания форм -- он того... в .dpr лежит. тут,
> как выход "в лоб", например -- посылать сообщение "всё
> создано, давай, инициализируйся" в соответствующем месте.
> конкретно же -- нужно на конкретныый проект смотреть.
>
Не надо на него смотреть. Я стесняюсь. :-)
> а я от того и намекаю про OnShow(), чтобы народ не привыкал
> к странному. %-)
>
Это не "странное". Имхо. Может быть "не продуманное" в ряде случаев, но не странное.
> зыж эх... если я такой умный, то почему почти безработный?
> %-)
А что значит "почти"?
>
Ketmar (2006-08-22 01:09:00) [19]> [23] Германн © (22.08.06 01:02)
давай начнём с того, хотя бы, что OnShow() может вызываться и не один раз. что само по себе должно родить смутные подозрения: "а то ли я делаю, запихивая туда какие-то инициализации?"
а порядок создания форм -- он того... в .dpr лежит. тут, как выход "в лоб", например -- посылать сообщение "всё создано, давай, инициализируйся" в соответствующем месте. конкретно же -- нужно на конкретныый проект смотреть.
а я от того и намекаю про OnShow(), чтобы народ не привыкал к странному. %-)
зыж эх... если я такой умный, то почему почти безработный? %-)
Германн (2006-08-22 01:02:00) [20]
> Ketmar © (21.08.06 22:22) [22]
>
...
> я бы, например, долго удивлялся, если бы выяснил, что форму
> закрывают из OnShow(). ну не укладывается в моём однобитном
> мозгу связь между show и close. %-)
>
Я, конечно, не претендую на "правильность". Но вот лично я достаточно часто в OnShow главной формы приложения вызываю такие процедуры, которые не могутбыть выполнены в OnCreate, поскольку другие формы ещё не созданы. А другие события главной формы для вызовов этих процедур мне не подходят по некоторым причинам. Продолжение работы в данном случае не имеет смысла. Поэтому только Close с соответствующими сообщениями или записями в лог.
Очень возможно, что я в большинстве случаев и не прав! И что можно было бы найти иной путь. Но для этого нужно либо обладать опытом разработки приложений не меньше чем у ЮЗ, либо иметь в штате фирмы соответствующих специалистов.