|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Создание и уничтожение формы
Доброе время суток всем. Уже неделю бьюсь над вопросом... И решил обратится к Вам.
Есть код: Код:
procedure TMainForm.IdTCPServerExecute(AContext: TIdContext); begin MessageForm:=TMessageForm.Create(Application); ... MessageForm.Show; end; Как видите, должна создаваться и появляться форма в приложении когда Сервер получает некое сообщение. Но форма появляется ровно на "секунду" и исчезает. Тогда я сделал так: Код:
MessageForm.ShowModal; http://www.delphisources.ru/forum/at...d=135258537 6 А вот при нажатии на кнопку этот код работает нормально. Как нужно. Подскажите как обойтись без "ShowModal"? Вообще не представляю почему так происходит. Помогите уважаемые прогеры. Неделю бьюсь над проблемой. |
#2
|
||||
|
||||
Цитата:
Я бы добавил форме обработчик своего сообщения и в нём бы создавал и показывал форму, а в обработчике IdTCPServerExecute посылал бы это своё сообщение через PostMessage. Вот примерно так: Код:
const MY_SHOWFORM = WM_USER + 1; type TMainForm = class(TForm) ..... procedure IdTCPServerExecute(AContext: TIdContext); ..... private ..... procedure MyShowForm(var Message: TMessage); message MY_SHOWFORM; ..... end; ..... implementation ..... procedure TMainForm.IdTCPServerExecute(AContext: TIdContext); begin PostMessage(Handle, MY_SHOWFORM, 0, 0); end; procedure TMainForm.MyShowForm(var Message: TMessage); begin MessageForm := TMessageForm.Create(Application); ... MessageForm.Show; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Romix (11.11.2012)
|
#3
|
|||
|
|||
poli-smen Спасибо большое!!! Я примерно так и представлял... Я знал что нужно вынести "процедуру" вне Execute... Но не додумался как. Теперь всё понятно. Дай Боженька тебе здоровья.
|
#4
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |