Saber la anchura de un control antes de crearlo
Publicado: Lun Mar 14, 2011 6:56 pm
Hola,
Estoy intentando crear un control similar a las nubes de etiquetas que aparecen en algunas páginas web, pero de primeras me encuentro con un problema que no sé cómo solucionar:
Tengo que poner varios THyperlink unos pegados a otros y pare ello me hace falta saber la anchura en pixels que va a tener el texto asignaré a cText. Pues no hay manera de saberlo.
Sólo he podido calcularlo para una fuente fija como lo courier donde sé de antemano la anchura de cada caracter.
De momento la cosa se queda así.
--------------------
WITH object oControl := THyperLink():New( ::oBevel1 )
:oFont := TFont():Create( "Courier", ::nPixels, 2, 400 )
:cText := aArray[n]
nLen := ( Len( :cText ) * ::nPixels ) + 1
if ::nLeft +18+ nLen + ::nPixels >= ::oBevel1:nWidth
::nTop += 14 *(::nPixels/8)
::nLeft := 0
endif
:SetBounds(::nLeft, ::nTop, nLen, 14*(::nPixels/8) )
::nLeft += nLen +1//::nPixels
:OnClick := "HyperLink1Click"
:Create()
END
---------------------
Así que la pregunta sería ¿Cómo calcular la variable nLen para cualquier tipo de letra y tamaño?
Otra cosa. Sé que los controles tienen una propiedad que me dicen qué tipo de control son, pero soy incapaz de acordarme de cual es.
1 Saludico,
Fredy
--
Attached files