Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закрытие формы в OnShow


Страницы:   1 2 3

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 с соответствующими сообщениями или записями в лог.
Очень возможно, что я в большинстве случаев и не прав! И что можно было бы найти иной путь. Но для этого нужно либо обладать опытом разработки приложений не меньше чем у ЮЗ, либо иметь в штате фирмы соответствующих специалистов.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо