DEFINE FONT vs TFont()

DEFINE FONT vs TFont()

Postby Xevi » Wed Dec 13, 2017 9:43 am

Buenos dias,

estoy con mis pinitos, y acostumbrado a trabajar directamente con la Clase (son costumbres que se van adquiriendo) me encuentro con mi primer "error" o falta de saber el como en lugar de

DEFINE FONT oFont2 NAME 'Calibrí' SIZE 6, -13

puedo hacer

WITH OBJECT oFont2 := TFont:New()
:cFaceName := "Calibrí"
:nSize := 12
END

al compilar, me lanza el error

Error description: Error BASE/1003 Variable does not exist: TFONT

Supongo que me hace falta incluir el fuente de la clase "TFONT.prg" o alguna lib... pero, no hay una lib de FW que englobe esta o todas las clases???

Gracias.

Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby hmpaquito » Wed Dec 13, 2017 9:54 am

Así TFont():New()
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: DEFINE FONT vs TFont()

Postby Xevi » Wed Dec 13, 2017 10:11 am

Perdón!!!
error de novato, novato!!!
No lo havia visto.

Otra cosa, porqué hay que definir ancho alto de una Font???

Yo quiero la fuente Calibrí tamaño 12, vaya, en cualquier desplegable de fuentes de windows, Word, Excel...
Y las propiedades de TFont, hay unas cuantas que hacen referencia a tamaño..
nHeight, nWidth, nInpHeight, nInpWidth, nWeight...

por mas que he probado combinaciones, creo no haber hallado con la que se "ajuste" a la real que obtengo en otras aplicaciones windows.
Parece como si "se pintara" la fuente, como sin definición, rara, no se corresponde con la "real"


Gracias.

Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby cnavarro » Wed Dec 13, 2017 10:14 am

Usalo asi

Code: Select all  Expand view

DEFINE FONT oFont2 NAME 'Calibrí' SIZE 0, -12

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: DEFINE FONT vs TFont()

Postby Xevi » Wed Dec 13, 2017 10:39 am

Ya habia provado... con todo y con eso, la fuente "distorsiona" con la real, en FW es un pequeñin mas pequeña y menos altas
por ejemplo, las 'b', 'p' o 'A' se aprecia claramente la diferencia.
He probado muchas combinaciones,... nada, ya encontraré sinó una fuente que me vaya bien y me agrade mas.

Por cierto

oFont2 := TFont():New( "Calibrí", 0, -12,,,,,,,,,,,,,, )

WITH OBJECT oFont2 := TFont():New()
:cFaceName := "Calibrí"
:nWidth := 0
:nHeight := -12
END

deberian de dar el mismo resultado final!!!
Pues no, el segundo muestra en negrita.

Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby cnavarro » Wed Dec 13, 2017 10:42 am

Un tema importante: control de pérdidas de recursos
Te pongo un ejemplo para que en tus programas puedas controlas si hay algún recurso: font, imagen, pen, etc que no haya sido liberado, que ahora al principio te aconsejo que lo incluyas en tus aplicaciones

Code: Select all  Expand view


#include "Fivewin.ch"
 
Static oFont
Static oFontMenu
Static oWnd
 
//----------------------------------------------------------------------------//

function Main()
 
   Local cFont   := "Tahoma"
   Local cFontH  := -14
   local cLog  := cFileSetExt( ExeName(), "log" )    // Defines el nombre del fichero de error
   local oMnu
 
   FERASE( cLog )
   SetResDebug( .T. )    // Activas el control de recursos
 
   DEFINE FONT oFont NAME "TIMES NEW ROMAN" SIZE 0,-12
   DEFINE FONT oFontMenu NAME cFont SIZE 0, cFontH WEIGHT 300
 
   DEFINE WINDOW oWnd MENU ( oMnu := MakeMenu() ) TITLE FWVERSION
   ACTIVATE WINDOW oWnd CENTERED
   RELEASE FONT oFont
   RELEASE FONT oFontMenu
 
   FERASE( "checkres.txt" )    // Borras el fichero anterior
   CHECKRES()                      // Generas el nuevo fichero
   if File( "checkres.txt" )
      waitrun("notepad checkres.txt")     // lo visualizas si hay pérdida de recursos
   endif
   if file( clog )
      winexec( "notepad.exe " + clog )
   endif
 
return nil
 
//----------------------------------------------------------------------------//
 
function MakeMenu()
 
   local oMenu, oMnu1, oMnu2
 
   MENU oMenu
      MENUITEM "One"
      MENU oMnu1
         MENUITEM "Sunday"  CHECKED
         MENUITEM SEPARATOR Upper( "Select" )
         MENUITEM "Monday" + CRLF + "Other"  BOLD  RADIOCHECK 3, 2
         MENUITEM "Tuesday"  ACTION MsgInfo( "Hola" ) ITALIC
         MENUITEM "WednesdaY"
         SEPARATOR
         MENUITEM "Thursday" FILE "..\bitmaps\full.bmp"
         SEPARATOR
         MENUITEM "Exit" ACTION WndMain():End() HSYSBITMAP 5
      ENDMENU
      MENUITEM "Two"
      MENU oMnu2
         MENUITEM "Sunday" HSYSBITMAP 9
         SEPARATOR
         MENUITEM "Monday" HSYSBITMAP 11
      ENDMENU
   ENDMENU
 
return oMenu

//----------------------------------------------------------------------------//
 
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: DEFINE FONT vs TFont()

Postby Xevi » Wed Dec 13, 2017 11:04 am

Cristobal,

Gracias por el aporte.

Otra cosa que ahora detecto en tu ejemplo.
El menu, si se le pone la cláusula 2007 o 2013 o 2015 se vuelve lento al cambiar entre desplegable.
He visto que es por los iconos de recursos, si los comento, luego va como debe de ir.
Haz la prueba y verás!!!

function MakeMenu()

local oMenu, oMnu1, oMnu2

MENU oMenu 2015 //menu estilo 2007/2013/2015
MENUITEM "One"
MENU oMnu1
MENUITEM "Sunday" CHECKED
MENUITEM SEPARATOR Upper( "Select" )
MENUITEM "Monday" + CRLF + "Other" BOLD RADIOCHECK 3, 2
MENUITEM "Tuesday" ACTION MsgInfo( "Hola" ) ITALIC
MENUITEM "WednesdaY"
SEPARATOR
MENUITEM "Thursday" FILE "..\bitmaps\full.bmp"
SEPARATOR
MENUITEM "Exit" ACTION WndMain():End()// HSYSBITMAP 5 lo comento porque se vuelve 'pesado' en menu 2007/2013/2015
ENDMENU
MENUITEM "Two"
MENU oMnu2
MENUITEM "Sunday"// HSYSBITMAP 9 lo comento porque se vuelve 'pesado' en menu 2007/2013/2015
SEPARATOR
MENUITEM "Monday"// HSYSBITMAP 11 lo comento porque se vuelve 'pesado' en menu 2007/2013/2015
ENDMENU
ENDMENU

return oMenu


És un bug o fallo en FW ???


Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby cnavarro » Wed Dec 13, 2017 11:07 am

Xevi, es la primera noticia que tengo sobre el tema, y nadie lo ha comentado
Qué ordenador utilizas?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: DEFINE FONT vs TFont()

Postby Xevi » Wed Dec 13, 2017 11:54 am

No se como insertar o adjuntar una imagen...

Windows 10 Enterprise 2016 LTSB
Intel core i5-6200U CPU 2.3GHz
8GB RAM
Sistema 64 bits
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby cnavarro » Wed Dec 13, 2017 12:24 pm

Xevi wrote:No se como insertar o adjuntar una imagen...

Windows 10 Enterprise 2016 LTSB
Intel core i5-6200U CPU 2.3GHz
8GB RAM
Sistema 64 bits


Hay un boton que pone Img, pero has de subirla a una web ( yo utilizo Postimage.org )
Con ese ordenador no puedes tener ningun problema.
Tengo que verlo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: DEFINE FONT vs TFont()

Postby nageswaragunupudi » Fri Dec 15, 2017 3:54 am

Code: Select all  Expand view
WITH OBJECT oFont2: = TFont (): New ()
: cFaceName: = "Calibrí"
: nWidth: = 0
: nHeight: = -12
END
 

This approach does not work.

TFont():New() method should get all the parameters. Then only the New() method can create a font object depending on the parameters. When New() is called without any parameters, a default font object is created. Subsequently adding datas like cFaceName, nHeight are obviously useless.

We once again recommend using command syntax, eg. DEFINE FONT ...
Even if we make some improvements/changes to New() method in future, we do always keep compatibility at the command level.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10206
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: DEFINE FONT vs TFont()

Postby hmpaquito » Fri Dec 15, 2017 9:15 am

Xevi,

En general, la creación de un objeto varía entre uno o dos pasos.
En el segundo caso el objecto precisa activarse (activate)

1 paso, TFont,

Code: Select all  Expand view
obj:= TFont():New(_PARAMETROS_)



2 pasos, TDialog,

Code: Select all  Expand view
obj:= TDialog():New(_PARAMETROS_)
WITH OBJECT obj
   :nWidth:= 400
END
obj:Activate()
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: DEFINE FONT vs TFont()

Postby Xevi » Fri Dec 15, 2017 10:03 am

Bien... hasta hí, entiendo, y correjiré la forma en escribir código en FW.
Manera "distinta" de tratar a las Classes/objetos de FW. Entendido.

Ahora bien, mi inquietud, es la que por mas que haga
DEFINE FONT oFont1 NAME "Calibri" SIZE 0, -12

esa font resultante no se corresponde PARA NADA a la que se obtiene en una aplicación windows que la utilice, vease Word o Excel o la otra aplicación que tengo desarrollada en otro entorno xBase.

he provado a cambiar SIZE por 0,-14 (la que más se acerca), 8,-12 / 8,-14...
pero los trazos de la letra no se corresponden. Con FW los palos de las 'p' o 'b' son cortos, la 'A' es mas chata, la letra en si no es tan 'redondeada' como deberia.

Es una inquietud que tengo... y viene de la primera vez que probé FW, que los trazos de letra no estan bien trazados por decirlo de una manera, la definicion es mas 'basta'. Es como si FW utilizara un 'pinzel' y dibujara la letra en lugar de coger la fuente en si.

Se que FW me abre muchas más opciones, pero en los detalles pequeños el resultado final importa... y uno es el estético.

Estoy buscando una fuente que me atraiga y que haga que mis aplicaciones me 'entren por la vista' si no puede ser con esa.


Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: DEFINE FONT vs TFont()

Postby karinha » Fri Dec 15, 2017 1:00 pm

Code: Select all  Expand view

C:\FWH1701\samples

TESTFON1.PRG
testfon2.prg
testfon3.prg
testfont.prg
 


http://forums.fivetechsupport.com/viewtopic.php?f=3&t=18075&p=94698&hilit=set+font+ofont#p94698

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7151
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: DEFINE FONT vs TFont()

Postby Xevi » Fri Dec 15, 2017 2:19 pm

Bien... testfon2.prg me sirve para mostrar el comportamiento que intento explicar.

Hay un boton que se puede seleccionar la fuente/tamaño/tipo... Si selecciono Calibri Normal 12, que es el tipo de letra que intento usar en mi aplicación, canvia el oSay correctamente y SI muestra el texto en la fuente seleccionada CORRECTO!!!

PERO...
He añadido un par de lineas al test.
podeis ver el prg en cuestion...

Code: Select all  Expand view

// Some tests with fonts capabilities

 #include "FiveWin.ch"

 Function Main()

 LOCAL oWnd,oSay
Local oFontCalibri12

 DEFINE WINDOW oWnd;
       FROM 1,5 TO 20,65;
       TITLE "Test font. oSay:oFont:lBold is always .t.!"

DEFINE FONT oFontCalibri12 NAME "Calibri" SIZE 0, -12
@ 11.5,10 SAY "Is this bold... Font Calibri12 ?" FONT oFontCalibri12

 @ 10,10 SAY oSay;
        PROMPT "Is this bold now?" OF oWnd

 @ 2,10 BUTTON "Change Font";
       SIZE 100,50;
       ACTION oSay:SelFont() OF oWnd

 @ 2,40 BUTTON "Bold?";
       SIZE 100,50;
       ACTION MsgInfo(If(oSay:oFont:lBold,"Yes, oSay:oFont:lBold says it's BOLD!","NOT BOLD, OK?")) OF oWnd

 ACTIVATE WINDOW oWnd

 RETU NIL
 


una variable local oFontCalibri12
tal como entiendo que deberia definir la fuente y asignarla a un say
DEFINE FONT oFontCalibri12 NAME "Calibri" SIZE 0, -12
@ 11.5,10 SAY "Is this bold... Font Calibri12 ?" FONT oFontCalibri12

pues bien, de entrada, al ejecutar el programa, no se aprecia esa fuente en el nuevo say, y si pulsamos para cambiar el fuente, cambia el fuente correctamente del primer say y se puede comprovar/ver la diferencia entre una fuente de un say y el otro say.

Así que,... cómo se define correctamente una fuente para que pille de primera al mostrar el SAY ??? (o Get, o...)


Un Saludo,
Xevi.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 14 guests