FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cambiar tipo de letra en aplicaci贸n
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Cambiar tipo de letra en aplicaci贸n
Posted: Mon Mar 07, 2022 03:52 PM
Hola,
el tema del tipo de letra de las aplicaciones ha sido un tema recurrente para mi, sobre todo por usar escalado de pantalla en Windows. Hace poco, inspirado en el ejemplo FiveDbu, quise probar como se ver铆an mis programas con una fuente de tama帽o fijo en vez de coger la fuente del sistema con

DEFINE FONT ::oFont NAME GetDefaultFontName() SIZE 0, GetDefaultFontHeight()

utilic茅 en su lugar

DEFINE FONT ::oFont NAME "Calibri" SIZE 0, -14

Me toc贸 cambiar el tipo de letra en todos los di谩logos en el fichero .RC pero el resultado creo que merece la pena.



Sin embargo tengo un control en que no se c贸mo tengo que cambiar la fuente, que es el ribbonbar. A este control le asigno la fuente de esta manera:

::SetFont(::oFont)

pero lo que hace es que cambia la fuente al t铆tulo de las pesta帽as pero no a los t铆tulos de los botones de dentro. Podeis ver en la imagen de arriba lo que digo.

驴 C贸mo le puedo cambiar la fuente a los botones del ribbon ?

Saludos,
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Mon Mar 07, 2022 04:58 PM
Jose Luis, a ver si te sirve algo de esto

Code (fw): Select all Collapse
   Local oDlg
   Local oGroup
   Local oBtn
   Local cFont       := "Segoe UI"
   Local nFontSize := 14

   oRb:oFont:End()
   oRb:SetFont( TFont():New( cFont, 0, -nFontSize ) )

   FOR EACH oDlg IN oRb:aDialogs

       FOR EACH oGroup IN oDlg:aControls
           if oGroup:IsKindOf( "TRBGROUP" )
              oGroup:oFont:End()
              oGroup:SetFont( TFont():New( cFont, 0, - ( nFontSize - 3 ) ) )

              FOR EACH oBtn IN oGroup:aControls
                  If oBtn:IsKindOf( "TRBTN" )

                     oBtn:oFont:End()
                     oBtn:SetFont( TFont():New( cFont, 0, - ( nFontSize - 3 ) ) )
                     oBtn:Refresh()
                  endIf
              NEXT
              //oGroup:Refresh()
           endif
       NEXT
   NEXT
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
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Mon Mar 07, 2022 05:34 PM

Perfecto, 隆 muchas gracias Crist贸bal !

Una pregunta, 驴antes de hacer el setfont() debo hacer un end() de la fuente por defecto? Por ejemplo, en todos los dialogos y algunos controles asigno fuente con setfont() pero antes no hago end() de la fuente por defecto.

Saludos,

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Mon Mar 07, 2022 11:21 PM

Que buen dato Cristobal, muchas gracias :D :D

Gracias Jos茅 Luis, por hacer la pregunta correcta :D

Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Mon Mar 07, 2022 11:30 PM
Jos茅 Luis S谩nchez wrote:Perfecto, 隆 muchas gracias Crist贸bal !

Una pregunta, 驴antes de hacer el setfont() debo hacer un end() de la fuente por defecto? Por ejemplo, en todos los dialogos y algunos controles asigno fuente con setfont() pero antes no hago end() de la fuente por defecto.

Saludos,


Tienes que hacer el End() antes de asignar el font, para que el contador de fonts se asigne correctamente y no obtengas mensajes de tipo EXCESS RELEASE o lo que es peor que se te queden fonts ( objetos ) sin destruir al salir de la aplicaci贸n
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
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 07:31 AM
Gracias de nuevo Crist贸bal, sigo con mis dudas. 驴 Esto es aplicable tambi茅n a los di谩logos desde recursos ?

Yo cuando creo un di谩logo desde recursos hago lo siguiente:

Code (fw): Select all Collapse
 聽 DEFINE DIALOG oDlg RESOURCE "USEDIT" OF oParent;
聽 聽 聽 TITLE aTitle[ nMode ]
聽 聽oDlg:SetFont( oApp():oFont )


驴 Deber铆a hacer un oDlg:End() antes de hacer el SetFont() ?

Olvid茅 decir que en mis aplicaciones solo utilizo una fuente que defino en la clase principal oApp, y que luego reutilizo en todos los .prg de la aplicaci贸n. oApp():oFont me devuelve esa fuente.Lo digo por tu comentario sobre el contador de fuentes, pero creo que te refieres a las fuentes de las clases que crean su propia fuente.

Saludos,
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 09:37 AM
Jos茅 Luis S谩nchez wrote:Gracias de nuevo Crist贸bal, sigo con mis dudas. 驴 Esto es aplicable tambi茅n a los di谩logos desde recursos ?

Yo cuando creo un di谩logo desde recursos hago lo siguiente:

Code (fw): Select all Collapse
 聽 DEFINE DIALOG oDlg RESOURCE "USEDIT" OF oParent;
聽 聽 聽 TITLE aTitle[ nMode ]
聽 聽oDlg:SetFont( oApp():oFont )


驴 Deber铆a hacer un oDlg:End() antes de hacer el SetFont() ?

Olvid茅 decir que en mis aplicaciones solo utilizo una fuente que defino en la clase principal oApp, y que luego reutilizo en todos los .prg de la aplicaci贸n. oApp():oFont me devuelve esa fuente.Lo digo por tu comentario sobre el contador de fuentes, pero creo que te refieres a las fuentes de las clases que crean su propia fuente.

Saludos,


No, no has de hacerlo si simplemente asignas un font inicialmente a un contenedor o control
Mi comentario era en relaci贸n a si cambias posteriormente el font
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
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 10:35 AM
cnavarro wrote:

Tienes que hacer el End() antes de asignar el font, para que el contador de fonts se asigne correctamente y no obtengas mensajes de tipo EXCESS RELEASE o lo que es peor que se te queden fonts ( objetos ) sin destruir al salir de la aplicaci贸n



Estimado Crist贸bal,

Siempre entend铆 que en Windows, cuando cierras la aplicacion Windows libera todos los recursos, lo cual hace posible que ninguna aplicacion por mala praxis tire abajo el sistema.
Ahora bien, es la propia aplicacion la que va a tener dificultades si su consumo de recursos crece desordenadamente puesto que tiene un l铆mite te贸rico m谩ximo de 10.000 objetos, al menos en Win32

Saludos cordiales
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 10:49 AM
Estimado Paquito
Te贸ricamente, as铆 deber铆a ser, pero el hecho es que no lo es
Tengo la costumbre de a帽adir al principio de mi aplicacion, antes de crear ning煤n control ni recurso gdi
Code (fw): Select all Collapse
聽 聽SetResDebug( .T. )


y justo antes de salir de la function Main
Code (fw): Select all Collapse
聽 聽if File( "checkres.txt" )
聽 聽 聽 FErase( "checkres.txt" )
聽 聽endif
聽 聽CheckRes()


En ese fichero "checkres.txt" podr谩s ver si hay recursos pendientes de ser "destru铆dos"
Si esto no lo has usado nunca, es posible que te lleves una sorpresita
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
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 11:21 AM
Estimado Crist贸bal,

"o lo que es peor que se te queden fonts ( objetos ) sin destruir al salir de la aplicaci贸n"


Mi comentario era en torno a lo quoteado arriba que no entend铆 bien porque tu quisiste decir en el momento "justo antes de salir de la aplicacion" cuando yo entendi "despues de salir de la aplicacion", es decir, recursos que quedaban "colgados" aun con la aplicacion cerrad.

Disculpa mi falta de entendimiento. Debe ser la edad. Luchar茅 contra ello :-)

Un cordial saludo
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Tue Mar 08, 2022 12:27 PM

Paquito, no nos enga帽es, que est谩s hecho un chaval.

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
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Wed Mar 09, 2022 05:57 PM

Hola otra vez :-)
Sigo con mi cambio de letra en la aplicaci贸n. Ahora el problema que tengo es que las funciones de mostrar mensajes de FWH - msginfo(), msgalert(), msgyesno() - utilizan la fuente del sistema.
驴 Se puede asignar una fuente a estos di谩logos ? 驴 C贸mo ?

Saludos,

Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Wed Mar 09, 2022 06:46 PM

Jos茅 Luis,

Es un viejo requerimiento de Fwh.

IMHO, s贸lo hay dos opciones:

1.- Crear un set de funciones alternativas a msginfo, msgyesno, msgnoyes, msgstop, etc, basado en un dialogo... Alguna vez vi algo asi en el foro
2.- Tirar de C y usar la funcion setfont aplicada a los objetos text de las ventanas msginfo, msgyesno, msgnoyes, siempre claro est谩 que pudieramos conocer su handle, etc...

Salu2

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Wed Mar 09, 2022 11:13 PM
Recuerda que si usas al principio de tu aplicaci贸n
Code (fw): Select all Collapse
CenterMsgs( .t. )


Los mensajes saldr谩n centrados en la ventana activa y no centrados respecto a las dimensiones del escritorio
S茅 que mi respuesta no tiene nada que ver con tu pregunta aparentemente, pero lo que quiero decir es que ojal谩 tomara por lo menos el font del "contenedor" de referencia que toma en cada caso ( con el CenterMsgs( .t. ) y sin 茅l )
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
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Cambiar tipo de letra en aplicaci贸n
Posted: Thu Mar 10, 2022 07:42 AM

Paquito, precisamente tengo un juego de funciones alternativas a esas funciones, pero es lo que quiero evitar para que tengan el aspecto nativo de los mensajes de Windows.

Crist贸bal, no conoc铆a el tema del centrado de mensajes, lo voy a probar a ver si afecta en algo a las fuentes.

Gracias a los dos por contestar :-)

Saludos,

Continue the discussion