Page 1 of 1

Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 3:22 am
by FranciscoA
Amigos, saludos.
Hay alguna manera para decidir si queremos BOLD o no, desde una variable, sin hacer lo siguiente?

Code: Select all  Expand view
if lNegrilla
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont BOLD OF oPrn
 else
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont OF oPrn
 endif


Otra:
La function Lower(cCad) no convierte la "Ñ" a "ñ". Alguna manera de solucionarlo?

Gracios

Re: Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 6:43 am
by Carles
Francisco,

FranciscoA wrote:
Code: Select all  Expand view
if lNegrilla
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont BOLD OF oPrn
 else
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont OF oPrn
 endif



Usa directament la clase para declarar el objeto, pasando la variable lNegrilla

Re: Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 8:55 am
by cnavarro
FranciscoA wrote:Amigos, saludos.
Hay alguna manera para decidir si queremos BOLD o no, desde una variable, sin hacer lo siguiente?

Code: Select all  Expand view
if lNegrilla
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont BOLD OF oPrn
 else
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont OF oPrn
 endif


Otra:
La function Lower(cCad) no convierte la "Ñ" a "ñ". Alguna manera de solucionarlo?

Gracios


Puedes intentarlo asi

    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont OF oPrn
oFont:lBold := lNegrilla

Re: Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 11:16 am
by hmpaquito
Francisco,

A ese tema le dediqué exclusivamente un post:

Y ya metidos en harina de comandos mal diseñados
Supongamos:

ACTIVATE WINDOW CENTER MAXIMIZED

¿ Qué pasa si la ventana será centrada a veces si o a veces no ? ¿ O maximizada si o maximizada no ?

Con lo facil que habria sido poner:

ACTIVATE WINDOW ;
CENTER lConCenter ;
MAXIMIZED lConMaximized



viewtopic.php?f=6&t=30055#p171359

Saludos

Re: Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 3:22 pm
by FranciscoA
Carles, Cristóbal, hmpaquito. Gracias por responder.

Carles:
Voy a intentar como dices.

Cristóbal:
No me funcionó, siempre pone la letra estándard.
Code: Select all  Expand view
lNegrilla := .t.
    DEFINE FONT oFont  NAME "Arial" SIZE nWdFont, nHtFont OF oPrn
   oFont:lBold := lNegrilla


hmpaquito:
Gracias por tu información.

Alguna otra sugerencia?

Saludos.

Re: Decidir si Font es Bold o no (SOLUCIONADO)

PostPosted: Thu Dec 01, 2016 5:30 pm
by FranciscoA
Gracias a todos.
Funcionó de la manera sugerida por Carles:

Code: Select all  Expand view
nWdFont:= 0
nHtFont:= -10

 oFont := TFont():New( "Arial", nWdFont, ( oPrn:nLogPixelY() / 72 ) * nHtFont, .f., lNegrilla )
 

Saludos

Re: Decidir si Font es Bold o no

PostPosted: Thu Dec 01, 2016 5:44 pm
by cnavarro
Si, evidente, de la forma que yo he puesto no puede funcionar

Re: Decidir si Font es Bold o no

PostPosted: Fri Dec 02, 2016 2:55 am
by FranciscoA
Cristóbal.
Al estudiar un poco la clase, me doy cuenta que existe la Data que mencionas. Lo que me extraña es que por qué no funciona.
De la misma classe fué que tomé oPrn:nLogPixelY() / 72 , ya que sin esto las letras aparecían extremadamente diminutas.

Muchas gracias por tu interés y tiempo.

Saludos.

Re: Decidir si Font es Bold o no

PostPosted: Fri Dec 02, 2016 9:19 am
by cnavarro
El tema es que una vez creada no puede ser modificada.
Pero, también, para tu información, siempre puedes, a partir de un font definido crear otro con alguna modificación sobre ella ( CreateFontIndirect ), lo mismo ocurre con otros recursos como los brush ( CreateBrushIndirect )
Para ello, puedes utilizar la function

hNewFont := CREATEFONTAS( oFont:hFont, oFont:lbold, oFont:lUnder, oFont:lItalic, oFont:nHeight )

//y, en tu caso, sería, por ejemplo ( para cambiar de bold o no bold y viceversa )

hNewFont := CREATEFONTAS( oFont:hFont, !oFont:lbold, oFont:lUnder, oFont:lItalic, oFont:nHeight )


que fácilmente podrías modificar para crear otra con las mismas características que la actual pero con otro cFaceName, añadiendo un parámetro más

Otra posibilidad, es hacer después ( que no he probado ), para intentar seguir usando el mismo oFont
oFont:hFont := hNewFont


Y, seguramente te obligue también, en cualquier caso a hacer al final de su uso
DeleteObject( hNewFont )

Re: Decidir si Font es Bold o no

PostPosted: Fri Dec 02, 2016 11:48 pm
by FranciscoA
Cristóbal,
Gracias por la información. La tendré en cuenta.
Saludos.