Ver Mensaje Individual
  #14  
Antiguo 19-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Reputación: 17
manuc Va por buen camino
Hola Richy08,

Pues sí, alguna te puedo dar.

Este código puede ser un poco más complicado de seguir al principio, pero creo que el más cómo, una vez lo tengas claro.

1.- Te Creas una nueva clase, para manejar tus componentes:

Código Delphi [-]
type
  tmisComponentes=Class(tPersistent)
  private
   fConexion:TSQLConnection;
   fQuery:TDataSet;
  Public
   destructor Destroy;
   property Conexion:TSQLConnection read fConexion write fConexion;
   property Query:TDataSet read fQuery write fQuery;
  end;

Cambia el tipo de componetes que quieras crear.

2.- Al recibir la conexión en el tcpServer Creamos los componentes:

Código Delphi [-]
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
var
 MisComponentes:tmisComponentes;
begin
 MisComponentes := tmisComponentes.Create;
 MisComponentes.Conexion := TSQLConnection.Create(self);
 MisComponentes.Query := TDataSet.Create(Self);

 AThread.Data := @MisComponentes;

end;

3.- ¿Cómo usarlos?

Código Delphi [-]
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
 MisComponentes:tmisComponentes;
begin
 MisComponentes :=  tmisComponentes(AThread.Data);

 MisComponentes.Query ....

end;

4.- Como destruirlos:

Código Delphi [-]
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
var
 MisComponentes:tmisComponentes;
begin
 MisComponentes :=  tmisComponentes(AThread.Data);

 MisComponentes.Conexion.Free;
 MisComponentes.Query.Free;

 ...

end;

Básicamente, lo que se haces es "recordar" la dirección de memoria donde están localizados los componentes, utilizando para ello un "puntero" que tiene cada conexión (.data).

Lo he hecho de cabeza y sin compilarlo. Puede ser que me haya equivocado en algo, pero básicamente lo puedes hacer así.

Si encuentra alguna duda, consulta sin problemas.

Un saludo.
Responder Con Cita