Ver Mensaje Individual
  #6  
Antiguo 30-01-2004
uhilari uhilari is offline
Miembro
 
Registrado: ene 2004
Posts: 21
Reputación: 0
uhilari Va por buen camino
Hola

Cita:
Empezado por diegofhernando
win:= TChat.Create(Self);
Aca esta tu problema

Cita:
Empezado por jachguate
Si te das cuenta, la sentencia TChat.Create(Self) se ejecuta en el hilo de la conexión, y no en el hilo principal de la aplicación.
jachguate tiene mucha razon este hilo se esta ejecutando en la conexión no en la aplicación. Asi que la forma como podrias hacer que esto se evite seria de la siguiente forma

Código:
procedure Tmain.sockExecute(AThread: TIdPeerThread);
var
  cont: integer;
  texto: string;
  win: TChat; // form que se crea dinamiamente para cada conversacion
begin
  text:= AThread.Connection.ReadLn();
  win:= TChat.Create(Application);
  win.name:= nombre_aleatorio;
  win.caption:= nombre_usuario;
  win.Show; // esto ya no debe ser un problema
end;
Pasando el objeto Application como parametro de Create pues haras que tu formulario este directamente ligado a la aplicación y no a tu formulario lo que le dará independencia.

Pero no te olvides de poner el siguiente codigo en el evento OnClose de tu formulario TChat

Código:
procedure TChat.Close(Sender : TObject; var Action : TCloseAction);
begin
  Action := caFree;
end;
lo que eliminara tu formulario de la memoria y te permitira crear otro mas luego.

Suerte
__________________
La practica y solo la practica hace al maestro
Responder Con Cita