[Lazarus-es] Refresh no funciona

francisco prieto fajprieto en gmail.com
Mar Ago 4 23:26:47 CEST 2015


Bueno, un avance...

Si pongo esto en un timer

   {Actualizo campo de Peso Actual}
   txtPesoAct.Text:=Floattostr(lnPesoTot);

y muevo el mouse, el peso se actualiza...

Ahora probare de mover el mouse por programa... un pixel a ver si se
actualiza...

Sigo investigando.

Saludos,

Pancho
Córdoba
Argentina

El 4 de agosto de 2015, 17:15, Martin Gomez <mmgomez en gmail.com> escribió:

> 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*
>
> _______________________________________________
> 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/20150804/b90e548a/attachment-0002.html>


More information about the Lazarus-es mailing list