Ver Mensaje Individual
  #7  
Antiguo 05-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Reputación: 20
ruina Va por buen camino
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.
Responder Con Cita