Visual Basic - Duda con FontSize

Life is soft - evento anual de software empresarial
 
Vista:

Duda con FontSize

Publicado por Jose (12 intervenciones) el 19/05/2003 18:30:02
Utilizo este código para cargar en un combo las fuentes disponibles en el sistema, ¿pero como hago para cargar en otro combo los tamaños disponibles para cada tipo de fuente?

Combo1.Clear
Dim X As Integer
For X = 0 To Screen.FontCount - 1
Combo1.AddItem Screen.Fonts(X)
Next X

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda con FontSize

Publicado por Pere (150 intervenciones) el 19/05/2003 20:43:44
Dim intl as integer
' empieza por el tamaño 1 hasta el 50 pero se puede modificar
For intI = 1 To 50
MiCombo.AddItem Str(intI)
Next intI
' aparece en el combo el tamaño 6 (o el que quieras)
MiCombo.ListIndex = 6

Espero que te sirva

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con FontSize

Publicado por Jose (12 intervenciones) el 19/05/2003 23:44:17
Quizas no me he explicado bien, me refiero a los tamaños reales de cada fuente. Dependiendo de la fuente seleccionada, ya sea TrueType o no, existen unos tamaños predefinidos.
¿Existe la posibilidad de saber cuales son los tamaños predefinidos para cada fuente?
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con FontSize (1ª parte)

Publicado por Pere (150 intervenciones) el 20/05/2003 00:34:15
Suponiendo que el combo que quieres llenar se llama combo1 y está en el form1 :

En un módulo :

Public Const LF_FACESIZE = 32
Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End Type
Type NEWTEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
ntmFlags As Long
ntmSizeEM As Long
ntmCellHeight As Long
ntmAveWidth As Long
End Type
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con FontSize (2ª parte)

Publicado por Pere (150 intervenciones) el 20/05/2003 00:35:41
Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA"
(ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long,
ByVal LParam As Long, ByVal dw As Long) As Long

Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, ByVal
FontType As Long, LParam As Long) As Long
Dim FaceName As String

'convertir a Unicode
FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)
'añadir al combo
Form1.Combo1.AddItem FaceName
'continuar la enumeracion
EnumFontFamProc = 1
End Function

Y para llenar el combo :

Dim LF As LOGFONT
EnumFontFamiliesEx Me.hdc, LF, AddressOf EnumFontFamProc, ByVal 0&, 0

Espero que te sirva.
Saludos
Pere
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar