Espera que me parece que lo he pillao:
no puedes modificar TCDControl. porque no es el objeto-componente, eso es la Clase.
Seria necesario que al Thread le pasaras el "Owner" o la instancia del control al que debe llamar, ma o meno es asi:
Código Delphi
[-]
TCDControl = class(...)
private
MiCDThread:TCDThread;
procedure IniciarThread;
...
end;
procedure TCDControl.IniciarThread;
begin
MiCDThread:=TCDThread.create(true);
MiCDThread.Componentellamada:=Self;
...
end;
TCDThread = class(thread)
public
Componentellamada:TCDControl;
...
end;
Ahora ya tendrias el objeto Componentellamada para poder "jugar" con él, eso si, si quieres cambiar algo debes hacerlo en un método Syncronized del thread, por ejemplo creas un método llamado TCDThread.ActualizaControl y en el execute lo llamas con:
Synchronize(ActualizaControl
)
Código Delphi
[-]
procedure TCDThread.ActualizaControl;
begin
Componentellamada.Label1.Caption = 'pepe';
Componentellamada.Variable:=56;
....
end;
Si creas el Thread mediante new... Thread Object, ya te escribira parte del código.