Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by FranciscoA »

remtec wrote: Me di cuenta de un error, el primer dato oSay1, en algunas ocaciones se imprime en blanco aun cuando el campo en la DBF tiene datos, me he podido dar cuenta, que esto ocurre, cuando el registro anterior el campo de oSay1 no tiene dato, al mostrar el siguiente produce el error.
El ultimo codigo que posteaste funciona bien aqui.
remtec wrote:Le hare una mdificacion, ya que cuando el campo esta vacio, muestra una linea paralela
Parece que el error te daba al intentar quitar lo que defines como linea paralela, que es el "BORDER" con anchura 0.

He procedido a ocultar el oSay (BORDER) cuando el dato está vacío. Para ello cambia la function RefreshData(), como sigue:

Code: Select all

Function RefreshData(aoSay, alBorder)

   AEval(aoSay,{|o,n| o:Refresh(),;
         if( Len(alltrim(o:cCaption)) > 0 ,;
             ( o:nWidth := GetTextWidth( 0, Alltrim(o:cCaption), o:oFont:hFont ) + if(alBorder[n],6,0), o:Show() ) ,;
             o:Hide() ) })

Return nil
 
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by remtec »

Hola Francisco

Aun cuando en la DBF el primer campo mostrado tiene una dato, el oSay1, muestra el rectando del largo del campo, pero sin dato.

Mira, cambie la DBF y el problema se produce en el oSay1 cuando el campo anterior no contiene dato, en ese caso, el registro siguiente aun cuando en la dbf tiene dato este campo, en la pantalla lo muestra en blanco, como lo indico en la linea de arriba..

Muchos Saludos
Antonio.
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by FranciscoA »

Antonio,
He modificado la tabla PLANIL.DBF con la que hago las pruebas de este codigo, agregándole un registro vacío, y me funciona sin ningún problema.
Puedes enviarme tu .DBF del problema a: falegria230349@yahoo.es ?
Saludos.

Editado: Comprimela y renombra fichero a .ZOP
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by remtec »

Hola Francisco

Muchas gracias por toda tus molestias.

Te lo he enviado a tu correo, claro que va como PRG y DBF, 2 archivos chicos.

Muchos Saludos

Antonio
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by FranciscoA »

Antonio,
El problema lo tienes en la tabla PROFESIO en el campo RUT_PRO (CHAR) cuyos datos tienen la inconsistencia de que algunos contienen 1 espacio en blanco al inicio.

Usualmente yo utilizo el VFP para examinar las tablas DBF.

Puedes hacer un REPLACE ALL rut_pro WITH LTRIM(rut_pro) y listo.
Es altamente recomendable hacer respaldo antes de ejecutar esta opcion.

Saludos.
Last edited by FranciscoA on Sun Jun 14, 2020 10:30 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
remtec
Posts: 431
Joined: Fri May 12, 2017 2:50 pm

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by remtec »

Amigo

Grande Maestro, tremendo error, además considerando lo importante que es este dato.

Nunca he aplicado este tipo de programas para revisar.

Mil gracias por todas las molestias que te has tomado, te agradezco de corazón.

Muchos Saludos.

Antonio
JESUS MARIN
Posts: 91
Joined: Wed Jan 02, 2019 8:36 am

Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"

Post by JESUS MARIN »

Hola a todos

¿ no sería mejor hacer el refresh después de establecer el nuevo ancho ?

ANTES

AEval(aoSay,{|o,n| o:Refresh() ,o:nWidth := GetTextWidth( 0, Alltrim(o:cCaption), o:oFont:hFont ) + if(alBorder[n],6,0) })


AHORA

AEval(aoSay,{|o,n| o:nWidth := GetTextWidth( 0, Alltrim(o:cCaption), o:oFont:hFont ) + if(alBorder[n],6,0), o:Refresh() })
Post Reply