[Lazarus-es] Refresh no funciona

Martin Gomez mmgomez en gmail.com
Mar Ago 4 22:15:35 CEST 2015


Segun lo que recuerdo, Update era el mas "lento" pero el más seguro de los
4 que mencionas.
Esa función que pegaste es directamente un evento? O es llamada desde el
evento en sí?
En caso que sea una función que llamas a mano, probá mandar
txtPesoAct.Update desde fuera, al salir... puede que el optimizador
interprete que ahí no tenes acceso al GUI (ni idea realmente, pero así lo
tengo que hacer en C#, o llamar un delegate() que acceda a la parte gráfica
cuando quiero forzarlo)

2015-08-04 16:46 GMT-03:00 francisco prieto <fajprieto en gmail.com>:

> Martin,
>
> Sigue sin responder...
>
> Pero ojo vi que lo que no se refresca es el valor porque si cambias por
> ejemplo de enabled a disabled funciona...
>
> Ya probe con
>
> Refresh
> Repaint
> Update
> Invalidate
>
> e incluso agregue un timer que haga el refresco independientemente si
> cambia el valor o no.
>
> He podido comprobar que si pongo un showmessage y en modo debug
> funciona... pero si le quito el modo debug hasta que no le doy showmessage
> desde otro campo no se actualiza el valor.
>
> Probe incluso con el Texout de canvas y NO ANDA... Hasta se me ocurrio
> ponerlo invisible y luego visible (ya que este es un error que da a veces
> en VFP y no anda de todos modos).
>
> Alguna otra sugerencia?
>
> Saludos,
>
> Pancho
> Córdoba
> Argentina
>
> El 4 de agosto de 2015, 16:28, Martin Gomez <mmgomez en gmail.com> escribió:
>
>> Tocando de oído, quizas puedas forzar un repintado con Invalidate() (en
>> Delphi funcionaba)
>>
>> 2015-08-04 13:30 GMT-03:00 francisco prieto <fajprieto en gmail.com>:
>>
>>> Tengo el siguiente código
>>>
>>> procedure TfrmPesaje.UpdPeso(cLectura:String);
>>> var
>>>   lcTramas:TStringList;
>>>
>>> lnIndice,lnNeto,lnNegativo,lnFueraRango,lnFueraEqui,lnTeclaAd,lnCantTramas:integer;
>>>
>>> lcEstadoA,lcEstadoB,lcEstadoC,lcPeso,lcTara,lcDecimales,lcLectura:string;
>>> begin
>>>   lcEstadoA:='';
>>>   lcEstadoB:='';
>>>   lcEstadoC:='';
>>>   lcPeso:='';
>>>   lcTara:='';
>>>   lcTramas:= TStringList.Create;
>>>   Split('|', cLectura, lcTramas);
>>>   lnCantTramas:=lcTramas.count;
>>>   if lnCantTramas=5 then
>>>      begin
>>>        lcEstadoA:=lcTramas.Strings[1];
>>>        lcEstadoB:=lcTramas.Strings[2];
>>>        lcEstadoC:=lcTramas.Strings[3];
>>>        lcPeso:=copy(lcTramas.Strings[4],1,6);
>>>        lcTara:=copy(lcTramas.Strings[4],7,6);
>>>        {Analisis Estado A}
>>>        lcEstadoA:=HextoBin(lcEstadoA);
>>>        lcDecimales:=copy(lcEstadoA,6,3);
>>>        case lcDecimales of
>>>             '010':lnPesoComa:=0;
>>>             '011':lnPesoComa:=1;
>>>             '100':lnPesoComa:=2;
>>>             '101':lnPesoComa:=3;
>>>             '110':lnPesoComa:=4;
>>>        else
>>>             lnPesoComa:=0;
>>>        end;
>>>        {Analisis Estado B}
>>>        lcEstadoB:=HextoBin(lcEstadoB);
>>>        lnNeto:=StrToInt(copy(lcEstadoB,8,1));
>>>        lnNegativo:=StrToInt(copy(lcEstadoB,7,1));
>>>        lnFueraRango:=StrToInt(copy(lcEstadoB,6,1));
>>>        lnFueraEqui:=StrToInt(copy(lcEstadoB,5,1));
>>>        {Analisis Estado C}
>>>        lcEstadoC:=HextoBin(lcEstadoC);
>>>        lnTeclaAd:=StrToInt(copy(lcEstadoB,5,1));
>>>        {Calculos Finales}
>>>        lnPesoTara:=StrToInt(lcTara)/(Exp(LN(10)*lnPesoComa));
>>>        lnPesoTot:=StrToInt(lcPeso)/(Exp(LN(10)*lnPesoComa));
>>>        if lnNegativo=1 then
>>>           lnPesoTot:=lnPesoTot*(-1);
>>>        {Actualizo campo de Peso Actual}
>>>        txtPesoAct.Text:=FloatToStr(lnPesoTot);
>>>        txtPesoAct.Refresh;
>>>        application.ProcessMessages;
>>>      end;
>>>
>>> Que se ejecuta por cada lectura del puerto serie.
>>>
>>> txtPesoAct es una caja de texto en la cual pongo el peso de la balanza.
>>>
>>> Si solo hago el Refresh no se refresca el control...
>>> Si le agrego application.ProcessMessages tampoco se refresca el control.
>>>
>>> El control solo se refresca cuando hago un showmessage desde otro
>>> control.
>>>
>>> Tengo otra pantalla que tiene un codigo similar pero el que recibe la
>>> info es una lista, en ese caso funciona sin inconvenientes...
>>>
>>> Espero sus comentarios.
>>>
>>> Pancho
>>> Córdoba
>>> Argentina
>>>
>>> _______________________________________________
>>> Lazarus-es mailing list
>>> Lazarus-es en lists.lazarus.freepascal.org
>>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>>
>>>
>>
>>
>> --
>>>> 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
>>
>>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
​
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*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20150804/e4cc8a5b/attachment-0002.html>


More information about the Lazarus-es mailing list