Ver Mensaje Individual
  #3  
Antiguo 25-06-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Trata de emular lo que ya viene de fabrica con los componentes o controles de Delphi.
No queda del todo claro en tu codigo pero aparentemente OnClientConnect y OnClientDisconnect son dos propiedades de tipo TNotifyEvent.

Esas 2 propiedades son publicas y estan ahi para que el usuario de tu clase pueda agregar codigo especifico
cuando se cierra/abre la conexion. Piensa en un TButton. En su propiedad OnClick, que viene por defecto a NIL (es decir, no hay codigo "de terceros"), se puede almacenar la direccion a una rutina que programamos nosotros para que se ejecute cuando se hace click en el boton

Vos ahi lo que estas haciendo es, en ese espacio preparado para los usuarios de tu clase, realizar el funcionamiento normal de tu clase, es decir, conectar o desconectar. Si a un TButton no le asignas nada en su OnClick, su metodo interno que procesa el click, dibuja el boton presionado, etc. Eso se sigue ejecutando tenga o no el boton un evento OnClick

Tu codigo deberia quedar masomenos asi

(yo tambien soy malo para expresarme, pero supongo que con el codigo se aclarara)

Código Delphi [-]
procedure createsrv;
begin
  srv := TServerSocket.Create( nil);
  srv.Port := 1000;
  srv.Active := true;
  srv.OnClientConnect    :=  NIL;
  srv.OnClientDisconnect := NIL;
end;

procedure doconnect;
begin
  // esto lo haces siempre
  lconnect := true;

  // nos dieron una rutina para ejecutar cuando me conecte?
  if Assigned(OnClientConnect) then
    OnClientConnect;
end;

procedure dodisconnect;
begin
  // esto lo haces siempre
  lconnect := false;

  // nos dieron una rutina para ejecutar cuando me desconecte?
  if Assigned(OnClientDisconnect) then
    OnClientConnect;
end;

Recomendable mirar un poquitito en el codigo fuente de la VCL, ahi se aclara todo en un instante
Responder Con Cita