Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No puedo ver cadena especificada en form1.caption (https://www.clubdelphi.com/foros/showthread.php?t=36799)

abracadabra 24-10-2006 22:10:57

No puedo ver cadena especificada en form1.caption
 
Hola a todos.
Estoy desarrollando una aplicación donde se tiene un thread que hace que se ejecute un evento. (Este evento puede ejecutarse varias veces). En dicho evento asigno una variable de tipo string a la propiedad caption del formulario (form1), es decir form1.caption:=variable; Esta variable (de tipo string) se modifica cada vez que se llama al evento. Por consiguiente cada vez que se llame al evento el caption del formulario se va a modificar.
El problema es que el caption no se visualiza (Si se visualiza la barra de título, pero no la cadena asignada a form1.caption en el evento).
He leido por ahí que existen maneras especiales para tratar con la VCL cuando se realizan aplicaciones con hilos (threads), pero no he podido encontrar una forma para solucionar este problema. Necesito de vuestra ayuda. Que puedo hacer????
Gracias de antemano.

Caral 24-10-2006 23:59:59

Hola
No deberia dar problemas, si lo haces como dices, hice una pequeña prueba y a mi me funciona, talvez hay algun otro problema en el codigo, revisalo.
Saludos

seoane 25-10-2006 00:17:30

Tienes que usar el metodo Synchronize. Por ejemplo:
Código Delphi [-]
  
  TMyThread = class(TThread)
  private
    NuevoCaption: String;
    procedure Actualizar;
  protected
    procedure Execute; override;
  end;


procedure TMyThread.Actualizar;
begin
  Form1.Caption:= NuevoCaption;
end;

procedure TMyThread.Execute;
var
  i: integer;
begin
  for i:= 1 to 100 do
  begin
    NuevoCaption:= IntToStr(i);
    Synchronize(Actualizar);
    Sleep(100);
  end;
end;

El thread anterior, al ejecutarse, va cambiando el caption del formulario (form1) cada 100 milisegundos.

abracadabra 25-10-2006 16:29:43

Muchas gracias Caral y Seoane por vuestra colaboración. Seoane he probado la solución que planteas y si da resultado :)
Una vez mas muchas gracias!!!!


La franja horaria es GMT +2. Ahora son las 14:25:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi