Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Chat   Найти похожие ветки 

 
Doplhin1   (2005-08-16 20:42) [0]

Привет Всем !

Пишу чат для сетки

Вопрос я хочу чтобы когда приходит собщение создавать форму
которое будет показывать сообщение
но когда в компоненте TTcpServer в евенте OnGetThread я пытаюсь создать форму начинаются проблемы

аналогично с использованием Indy в компоненте TIdHTTPServer
в евенте OnCommandGet при создании формы начинаются проблемы


 
Alexander Panov ©   (2005-08-16 22:23) [1]

Наверное серьезные проблеммы начинаются?


 
Yegorchic ©   (2005-08-17 00:57) [2]

Лучше используй IdUDPServer/IdUDPClient.
Я так чат писал, всё работало хорошо, тока за место формы звук был...


 
Alexander Panov ©   (2005-08-17 02:20) [3]

Я так чат писал, всё работало хорошо, тока за место формы звук был...
У меня с TClientSocket и TServerSocket тоже работало, но таких серьезных проблем не возникало.


 
Digitman ©   (2005-08-17 12:41) [4]


> в компоненте TTcpServer в евенте OnGetThread я пытаюсь создать
> форму


в обработчике этого события от тебя требуется создать трэд, а не форму !

читать умеешь ?

GetThread = Получить трэд !!


 
Doplhin1   (2005-08-19 20:21) [5]

решение простое даже очень
надо обьявить что то вроде

 TClientDataThread = class(TThread)
 private
 public
   ListBuffer :TStringList;
   TargetList :TStrings;
   Form : Tfm_pers_mess;
   IdUser : string;
   AMessage : string;
   procedure synchAddDataToControl;
   constructor Create(CreateSuspended: Boolean);
   procedure Execute; override;
   procedure Terminate;
 end;

procedure TClientDataThread.Execute;
begin
 Synchronize(synchAddDataToControl);
end;

procedure TClientDataThread.Terminate;
begin
 ListBuffer.Free;
 inherited;
end;

constructor TClientDataThread.Create(CreateSuspended: Boolean);
begin
 inherited Create(CreateSuspended);
 FreeOnTerminate := true;
 ListBuffer := TStringList.Create;

end;

procedure TClientDataThread.synchAddDataToControl;
var
   frm : Tfm_pers_mess; // вот форма которая будет создаваться
   flag : boolean;
   mrc : TMessageRecord;
   intIdUser : Integer;
   i: Integer;
begin
         frm := Tfm_pers_mess.Create(fm_main);
         frm.AddText(AMessage,fm_main.lv_usr_invisible.Items[intIdUser].SubItems[0], clRed);
      PlaySound(Pchar(Str_snd_message), 0, SND_FILENAME + SND_NOWAIT + SND_ASYNC);
      FlashWindow(frm.Handle,true);
      frm.Show;
end;
а в евенте

procedure Tfm_main.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var response,scriptName:string;
   IdUser : integer;
   i : integer;
   s: string;
   DataThread: TClientDataThread;
begin
//  AThread.Start;
 scriptName:=StringReplace(ARequestInfo.Document,"/","",[rfReplaceAll]);
try
  response:="BAD";
  if scriptName="message" then
  begin //
     response:=str_responce_ok;
     DataThread:= TClientDataThread.Create(true);
     DataThread.IdUser := ARequestInfo.RemoteIP;
     DataThread.AMessage := ARequestInfo.Params.Values["text"];
     DataThread.Resume;
  end;

  except
   on e: Exception do showMessage(e.Message);
   //log.AddNewRecord(e.Message,"Exception",true,true);

  end;
  AResponseInfo.ContentText:=response;//+ARequestInfo.Params.Text;
///------

end;


 
Digitman ©   (2005-08-22 18:12) [6]


> Doplhin1   (19.08.05 20:21) [5]


и незачем было весь этот огород городить с созданием трэда..

достаточно в теле IdHTTPServer1CommandGet послать (Send/PostMessage) окну формы fm_main какое-либо заранее предопределенное тобой сообщение, в обработчике которого как раз и можно создать форму Tfm_pers


 
Doplhin1   (2005-08-22 21:49) [7]

Тоже идея :)



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1129924227
zig
2005-10-21 23:50
2005.12.04
sqlduery.params.parambyname( pf2 ).asstring >>> error 22018


14-1131519250
Antonn
2005-11-09 09:54
2005.12.04
Антивирь считает мой проект вирусом:)


10-1108636552
Swimmer
2005-02-17 13:35
2005.12.04
Так стоит использовать CORBA


4-1128327561
AngelFire
2005-10-03 12:19
2005.12.04
Секьюрный диалог


14-1131614974
ilya39
2005-11-10 12:29
2005.12.04
Аналог OpenDialog в VBA