Mensaje de cliente a Servidor
Hola.
Despues de buscar varios dias en el foro y no encontrar algo que se paresca a mi problema que tengo me decidi por hacer esta pregunta. Bueno primero uso Delphi7 y las Indy 9, y me encuentro desarrollando un sistemita para un cyber, Tengo una AplicacionCliente con un TIdTCPClient y tambien una AplicacionServidor con un TIdTCPServer y un TIdThreadMgrDefault. Código:
//--- Mi bloc de comunicaciones lo uso en ambas partes (AppServer+AppCliente) Del cliente al servidor lo hago asi: Código:
procedure TFrm_Principal.Button1Click(Sender: TObject); Código:
procedure TFrm_Principal.ServerExecute(AThread: TIdPeerThread); Código:
Procedure TFrm_Principal.MostrarMensaje(Pak : TComunicacion); |
Hola,
Yo creo que el problema está en mostrar el formulario en donde se mostrará a su vez el mensaje de forma "modal". Es decir, ¿probaste mostrando el formulario con el método "Show", y, si quieres que permanezca por encima, cambiando su propiedad "FormStyle" a "fsStayOnTop"? En cualquier caso gracias por tu mensaje, pues contiene información que me parece interesante. A ver si es posible solucionar el problema. ;) |
Responder a tema
Hola.
Gracias por responder, ya probe con el metodo Show del Formulario pero cuando hago eso ni siquiera se muestra bien el formulario nadamas se pueden ver los Bordes y el mensaje con el boton no se pueden ver, y el servidor de todas formas se Bloquea. Por otra parte con el metodo ShowModal se muestra bien el formulario del mensaje pero al darle click en el boton de Aceptar se cierra el formulario del mensaje y el servidor se Bloquea hasta que cierro el cliente que me mando el mensaje., Si yo ignoro el formulario del mensaje y doy click en cualquier parte del formulario principal puedo seguir trabajando en el servidor pero el formulario sigue visible si la propiedad FormStyle = fsStayOnTop, si esta propiedad la cambio a Normal el formulario desaparece, pero si mando otro mensaje del cliente ya no me muestra el formulario del mensaje en el servidor y este sigue Bloqueado...:confused: Despues de cerrar el cliente que envia el mensaje puedo cerrar el servidor y me manda este mensaje: Error de sistema. codigo 1400 El identificador de la ventana no es valido Esto sucede con el metodo ShowModal. Alguna otra idea :rolleyes: |
No olvides que los servidores indy son multihilos, por lo que al ejecutarse el evento ServerExecute, esto se realiza en el hilo de la conexión con el cliente y todas las operaciones a realizar con la VCL en la interfaz de usuario debén llevarse a cabo en el hilo principal de la aplicación, para lo que podes valerte del método Synchronize.
Saludos. |
Si se puede hacer
Hola.
Pues en vista de que no hay creo yo casos similares, le segui buscando y di con la respuesta y era algo sencillo, :p pero a falta de conocimiento entra la desesperacion. Bueno ahora si puedo ver los mensajes sin ningun problema en el servidor con el metodo Show o ShowModal de mi formulario. Pongo el codigo que cambio del primer mensaje que puse:
al procedimiento de mostrarmensaje solo le quite el parametro:
Y tube que usar AThread.Synchronize ya lo habia intentado pero el procedimiento de MandarMensaje tenia parametro y asi no se puede mandaba este error: [Error] Principal.pas(426): There is no overloaded version of 'Synchronize' that can be called with these arguments lo quite y jejeje Papitas...:D |
Responder a tema
Hola.
jachguate Cita:
|
La franja horaria es GMT +2. Ahora son las 12:09:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi