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

    Configuración de la lista desplegable ancho de un combobox : Multi-millones de consejos para hacer su vida más fácil.
    Recommander aux amis
    • gplus
    • pinterest

    Comentario

    Dejar un comentario

    Clasificación