Цитата:
Сообщение от Romix
Доброе время суток всем. Уже неделю бьюсь над вопросом... И решил обратится к Вам.
Есть код:
Код:
procedure TMainForm.IdTCPServerExecute(AContext: TIdContext);
begin
MessageForm:=TMessageForm.Create(Application);
...
MessageForm.Show;
end;
Как видите, должна создаваться и появляться форма в приложении когда Сервер получает некое сообщение. Но форма появляется ровно на "секунду" и исчезает.
|
Скорее всего проблема связана с многопоточностью.
Я бы добавил форме обработчик своего сообщения и в нём бы создавал и показывал форму, а в обработчике 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;