Se il tuo TCommand deriva da TStream, deve anche comportarsi come uno stream.

Il fatto che sia richiesto un tipo di dato specifico, TStream, deriva dal fatto che questo tipo fornisce metodi e proprietà specifici; creare uno stream personalizzato implica la ridefinizione di metodi per eseguire determinate operazioni e supportare, insomma, le funzionalità del nuovo tipo di stream.

Non è necessario in questo caso, secondo me.

Puoi sempre mantenere la struttura che preferisci per rappresentare il pacchetto dati da inviare, cioè il tuo TCommand. L'unica cosa che devi fare è copiare i dati della tua struttura all'interno di una delle classi che implementano TStream (che è astratta, come indicato nella Guida), come ad esempio TMemoryStream, che rappresenta semplicemente un flusso di dati in memoria. Usando i metodi di scrittura nello stream, devi copiare un "record" (inteso come serie di dati) al suo interno, inviarlo tramite Indy Components e, dall'altra parte, fare l'operazione inversa con i metodi di lettura dopo averlo ricevuto.

Non andare a tentoni però: consulta la guida sulla classe TStream e discendenti, reperisci documentazione ed esempi per capire come si utilizzano e, in seguito, applicali al tuo caso.

Ciao!

P.S.: ma perchè i tuoi client non possono prelevare i dati direttamente dal database MySQL?