FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 03:14 AM
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 (fw): Select all Collapse
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.



Fwxh-MySql-TMySql
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 04:33 AM

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.

FWH 22.10 - HARBOUR - PELLES C
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 03:23 PM

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.



Fwxh-MySql-TMySql
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 07:11 PM

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

FWH 22.10 - HARBOUR - PELLES C
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 09:32 PM

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.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 719
Joined: Fri May 12, 2017 02:50 PM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Sun Jun 14, 2020 10:08 PM

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

FWH 22.10 - HARBOUR - PELLES C
Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: Como Calcular Ancho en Pixeles de una Variable "FrancicoA"
Posted: Mon Jun 15, 2020 10:16 AM
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:hFont ) + if(alBorder[n],6,0) })


AHORA

AEval(aoSay,{|o,n| o:nWidth := GetTextWidth( 0, Alltrim(o:cCaption), o:hFont ) + if(alBorder[n],6,0), o:Refresh() })
Jesús Marín
deumare@gmail.com

Continue the discussion