[Lazarus-es] [Fpc] Refresh no funciona

francisco prieto fajprieto en gmail.com
Jue Ago 6 02:28:10 CEST 2015


Miren hice lo siguiente y aun presenta el mismo error...

1) Agregue un hilo

    { TMiHilo }

    TMiHilo = class(TThread)
    private
      fStatusText: string;
      procedure MostrarPeso;
    protected
      procedure Execute; override;
    public
      constructor Create(CreaSuspendido: boolean);
    end;

2) En la definicion del formulario coloque esta propiedad como publica

  public
    lnPesoTot:real;

3) Agregue los procedimientos de mi hilo

{ TMiHilo }
procedure TMiHilo.MostrarPeso;
begin
    frmPesaje.txtPesoAct.Text:=FloatToStr(frmPesaje.lnPesoTot);
    frmPesaje.txtPesoAct.Refresh;
end;

procedure TMiHilo.Execute;
var
  newStatus : string;
  aaa:string;
begin
  fStatusText := 'Ejecutando...';
  while (not Terminated) and (true) do begin
      sleep(2000);
      fStatusText := 'Mostrando Peso ...';
      Synchronize( @MostrarPeso );
  end;
end;

constructor TMiHilo.Create(CreaSuspendido: boolean);
begin
  FreeOnTerminate := True;
  inherited Create(CreaSuspendido);
end;

4) Agregue una variable en el procedimiento de mi formulario denomidado
UpdPeso

MiHilo : TMiHilo;

para poder hacer referencia a mi hilo.

5) Finalmente agregue el siguiente codigo en el procedimiento UpdPeso

       //creamos el hilo, pero no lo iniciamos
       MiHilo := TMiHilo.Create(True); // Con el parametro true no se
inicia automaticamente
       if Assigned(MiHilo.FatalException) then
          raise MiHilo.FatalException;
       //si no hay ninguna excepción lo iniciamos
       MiHilo.Start;

Compila perfecto pero solo actualiza cuando me muevo con el mouse sobre la
barra de herramientas, como en los casos anteriores. O bien cuando muestro
el ShowMessage.

Se les ocurre algo mas?

Saludos,

Pancho
Córdoba
Argentina

2015-08-05 20:55 GMT-03:00 Martin Gomez <mmgomez en gmail.com>:

> Con el Sincronize(UpdPeso) tampoco? Eso debería aislarte del
> multithreading interno de LazSerial (si es que tiene)
>
>
> --
>> Most good programmers do programming not because they expect to get paid
> or get adulation by the public, but because it is fun to program.
> ​ ​
> *Linus Torvalds*
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150805/20f3c02e/attachment-0002.html>


More information about the Lazarus-es mailing list