![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
|