Показать сообщение отдельно
  #2  
Старый 11.11.2012, 02:45
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от 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;
Ответить с цитированием