Configuración de la lista desplegable ancho de un combobox
Cuando la longitud de una cadena en un combobox supera el ancho de la combobox hay 3 cosas que se pueden hacer son
Acortar la cadena (no es una muy buena solución)
Añadir una barra de desplazamiento horizontal
Cambiar el ancho de la lista desplegable.
La siguiente función de restablecer el ancho de la lista desplegable dentro de un combobox.
Se tarda de 2 parámetros (1 opcional).
ComboBox es el TComboBox whos desplegable ancho de ser cambiado.
Ancho es un parámetro opcional que especifica la anchura de la lista desplegable. Si
el ancho es menor que el ancho de la lista desplegable, a continuación, este parámetro será ignorado y el ancho será ajustado a la cadena más larga en el combobox.
procedimiento SetComboDropDownWidth(ComboBox: TComboBox Ancho: Integer = -1)
var
& nbsp & nbsp yo, TextLen: Longint
& nbsp & nbsp lf: LOGFONT
& nbsp & nbsp f: HFONT
begin
& nbsp & nbsp si la Anchura < ComboBox.Ancho, a continuación, empezar
& nbsp & nbsp & nbsp & nbsp FillChar(lf,SizeOf(lf),0)
& nbsp & nbsp & nbsp & nbsp StrPCopy(lf.lfFaceName, ComboBox.Fuente.Nombre)
& nbsp & nbsp & nbsp & nbsp lf.lfHeight := ComboBox.Fuente.Altura
& nbsp & nbsp & nbsp & nbsp lf.campos lfweight := FW_NORMAL
& nbsp & nbsp & nbsp & nbsp si fsBold en el ComboBox.Fuente.De estilo, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lf.campos lfweight := lf.campos lfweight o FW_BOLD
& nbsp & nbsp & nbsp & nbsp f := CreateFontIndirect(lf)
& nbsp & nbsp & nbsp & nbsp si (f <> 0) entonces
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ComboBox.El lienzo.Identificador := GetDC(ComboBox.El asa)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SelectObject(ComboBox.El lienzo.Manejar,f)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp for I := 0 para ComboBox.Elementos.Contar -1 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TextLen := ComboBox.El lienzo.TextWidth(ComboBox.Los elementos[I])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TextLen > > Ancho, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Ancho := TextLen
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (* Estándar ComboBox dibujo es Rect.A la izquierda 2, a
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp añadir el espaciado adicional compensa esta *)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Inc(Ancho, GetSystemMetrics(SM_CYVTHUMB)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp GetSystemMetrics(SM_CXVSCROLL))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ReleaseDC(ComboBox.Manejar, ComboBox.El lienzo.El asa)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DeleteObject(f)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
& nbsp & nbsp SendMessage(ComboBox.Manejar, CB_SETDROPPEDWIDTH, Ancho, 0)
fin
saludos
Si Carter
Orcka de Desarrollo
Configuracion de la lista desplegable ancho de un combobox
Configuracion de la lista desplegable ancho de un combobox : Multi-millones de consejos para hacer su vida mas facil.
Cuando la longitud de una cadena en un combobox supera el ancho de la combobox hay 3 cosas que se pueden hacer son
Acortar la cadena (no es una muy buena solucion)
Añadir una barra de desplazamiento horizontal
Cambiar el ancho de la lista desplegable.
La siguiente funcion de restablecer el ancho de la lista desplegable dentro de un combobox.
Se tarda de 2 parametros (1 opcional).
ComboBox es el TComboBox whos desplegable ancho de ser cambiado.
Ancho es un parametro opcional que especifica la anchura de la lista desplegable. Si
el ancho es menor que el ancho de la lista desplegable, a continuacion, este parametro sera ignorado y el ancho sera ajustado a la cadena mas larga en el combobox.
procedimiento SetComboDropDownWidth(ComboBox: TComboBox Ancho: Integer = -1)
var
& nbsp & nbsp yo, TextLen: Longint
& nbsp & nbsp lf: LOGFONT
& nbsp & nbsp f: HFONT
begin
& nbsp & nbsp si la Anchura < ComboBox.Ancho, a continuacion, empezar
& nbsp & nbsp & nbsp & nbsp FillChar(lf,SizeOf(lf),0)
& nbsp & nbsp & nbsp & nbsp StrPCopy(lf.lfFaceName, ComboBox.Fuente.Nombre)
& nbsp & nbsp & nbsp & nbsp lf.lfHeight := ComboBox.Fuente.Altura
& nbsp & nbsp & nbsp & nbsp lf.campos lfweight := FW_NORMAL
& nbsp & nbsp & nbsp & nbsp si fsBold en el ComboBox.Fuente.De estilo, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lf.campos lfweight := lf.campos lfweight o FW_BOLD
& nbsp & nbsp & nbsp & nbsp f := CreateFontIndirect(lf)
& nbsp & nbsp & nbsp & nbsp si (f <> 0) entonces
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ComboBox.El lienzo.Identificador := GetDC(ComboBox.El asa)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SelectObject(ComboBox.El lienzo.Manejar,f)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp for I := 0 para ComboBox.Elementos.Contar -1 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TextLen := ComboBox.El lienzo.TextWidth(ComboBox.Los elementos[I])
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si TextLen > > Ancho, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Ancho := TextLen
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp (* Estandar ComboBox dibujo es Rect.A la izquierda 2, a
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp añadir el espaciado adicional compensa esta *)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Inc(Ancho, GetSystemMetrics(SM_CYVTHUMB)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp GetSystemMetrics(SM_CXVSCROLL))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ReleaseDC(ComboBox.Manejar, ComboBox.El lienzo.El asa)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp DeleteObject(f)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
& nbsp & nbsp SendMessage(ComboBox.Manejar, CB_SETDROPPEDWIDTH, Ancho, 0)
fin
saludos
Si Carter
Orcka de Desarrollo
Configuración de la lista desplegable ancho de un combobox
By Consejos Y Trucos
Configuración de la lista desplegable ancho de un combobox : Multi-millones de consejos para hacer su vida más fácil.