Ich würde dir raten,
Indy 10 zu verwenden.
Indy 9 ist kein Standard mehr.
Bezüglich deines Problems liegst du richtig. Es gibt keinen "OnExecute"- / "OnDataReceived"-Event für
TCP-Clients, da das ebenso nicht dem Standard entspricht. Der Client holt sich seine Daten immer vom Server, nicht umgekehrt.
Auch wenn es einen solchen Event gäbe wäre die Implementierung die gleiche: Der Client müsste mit IOHandler.IsInputBufferEmpty beim Server anfragen, ob Daten für ihn im Puffer liegen und sich diese dann abholen. Denn selbst wenn der Server an den Client schickt, geht das nicht durch die Leitung, bis der Client danach fragt.