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
lconnect := true;
if Assigned(OnClientConnect) then
OnClientConnect;
end;
procedure dodisconnect;
begin
lconnect := false;
if Assigned(OnClientDisconnect) then
OnClientConnect;
end;
Recomendable mirar un poquitito en el codigo fuente de la VCL, ahi se aclara todo en un instante