elcharlie
09-10-2013, 12:48:55
Buenos dias a Todos:
Estoy haciendo una aplicación la cual, tiene que comunicarse por protocolo tcp/ip. Este programa tiene uno formulario modal de parametros, en el cual se mete la ip del servidor, los datos necesarios, y un boton test para probar la conexion.
Ese boton test llama a una funcion que comprueba si el servidor esta activo, y me gustaria que se mostrara un formulario con la tipica progress bar con el stilo pbstMarquee, indicando que esta intentando realizar la conexion.
este es el codigo del boton test:
procedure TFormConfiguracion.ButtonTestClienteClick(Sender: TObject);
begin
if TestTCPClient(EdIPCliente.Text, EdPasswordProtocolo.Text, EdPuertoCliente.Value, self) then
begin
MensajeInformacion('Conexión con el Servidor Establecida con Exito!','');
end
else
begin
MensajeError('Error al Conectar con el Servidor!','');
end;
end;
el codigo de la funcion TestTCP:
function TestTCPClient(Host,Password: String; Puerto: Integer; AOwner: TComponent): Boolean;
var
TCPCliente: TIdTCPClient;
textoEnvio: String;
begin
TCPCliente := TIdTCPClient.Create(nil);
Result := False;
TCPCliente.Host := Host;
TCPCliente.Port := Puerto;
TCPCliente.ConnectTimeout := 20000;
textoEnvio := Trim(Password)+'|TEST|#';
try
ShowFormCompConexion(AOwner, 'Intentando establecer conexión con el equipo '+Host+'...');
TCPCliente.Connect;
TCPCliente.Socket.ReadTimeout := 10000;
TCPCliente.Socket.WriteLn(textoEnvio, TEncoding.ANSI);
if (TCPCliente.Socket.ReadLn(TEncoding.ANSI) = 'OK#') then
Result := True;
CloseFormCompConexion;
except
on E : Exception do
begin
CloseFormCompConexion;
Exit;
end;
end;
end;
y el codigo de la funcion que muestra el formulario con la barra de progreso:
procedure ShowFormCompConexion(AOwner: TComponent; Dato: String);
var
WindowList: TTaskWindowList;
LSaveFocusState: TFocusState;
SaveCursor: TCursor;
SaveCount: Integer;
ActiveWindow: HWnd;
begin
Form_CompConexion := TFormCompConexion.Create(AOwner);
Form_CompConexion.LbDato.Caption := Dato;
Form_CompConexion.Show;
Form_CompConexion.Repaint;
end;
El problema es que este formulario se queda como inactivo, me explico no se mueve la barra de progreso, es como si el esperara a que acabara el proceso. He probado a meter un gif, y nada, un edit y no me deja editarlo....
Alguien me puede ayudar??
Estoy haciendo una aplicación la cual, tiene que comunicarse por protocolo tcp/ip. Este programa tiene uno formulario modal de parametros, en el cual se mete la ip del servidor, los datos necesarios, y un boton test para probar la conexion.
Ese boton test llama a una funcion que comprueba si el servidor esta activo, y me gustaria que se mostrara un formulario con la tipica progress bar con el stilo pbstMarquee, indicando que esta intentando realizar la conexion.
este es el codigo del boton test:
procedure TFormConfiguracion.ButtonTestClienteClick(Sender: TObject);
begin
if TestTCPClient(EdIPCliente.Text, EdPasswordProtocolo.Text, EdPuertoCliente.Value, self) then
begin
MensajeInformacion('Conexión con el Servidor Establecida con Exito!','');
end
else
begin
MensajeError('Error al Conectar con el Servidor!','');
end;
end;
el codigo de la funcion TestTCP:
function TestTCPClient(Host,Password: String; Puerto: Integer; AOwner: TComponent): Boolean;
var
TCPCliente: TIdTCPClient;
textoEnvio: String;
begin
TCPCliente := TIdTCPClient.Create(nil);
Result := False;
TCPCliente.Host := Host;
TCPCliente.Port := Puerto;
TCPCliente.ConnectTimeout := 20000;
textoEnvio := Trim(Password)+'|TEST|#';
try
ShowFormCompConexion(AOwner, 'Intentando establecer conexión con el equipo '+Host+'...');
TCPCliente.Connect;
TCPCliente.Socket.ReadTimeout := 10000;
TCPCliente.Socket.WriteLn(textoEnvio, TEncoding.ANSI);
if (TCPCliente.Socket.ReadLn(TEncoding.ANSI) = 'OK#') then
Result := True;
CloseFormCompConexion;
except
on E : Exception do
begin
CloseFormCompConexion;
Exit;
end;
end;
end;
y el codigo de la funcion que muestra el formulario con la barra de progreso:
procedure ShowFormCompConexion(AOwner: TComponent; Dato: String);
var
WindowList: TTaskWindowList;
LSaveFocusState: TFocusState;
SaveCursor: TCursor;
SaveCount: Integer;
ActiveWindow: HWnd;
begin
Form_CompConexion := TFormCompConexion.Create(AOwner);
Form_CompConexion.LbDato.Caption := Dato;
Form_CompConexion.Show;
Form_CompConexion.Repaint;
end;
El problema es que este formulario se queda como inactivo, me explico no se mueve la barra de progreso, es como si el esperara a que acabara el proceso. He probado a meter un gif, y nada, un edit y no me deja editarlo....
Alguien me puede ayudar??