Die Dropdown-Breite der Combobox festlegen


Überschreitet die Länge einer Zeichenkette in eine Combobox die Breite der Combobox, die es gibt 3 Dinge, die getan werden können, sind Sie

  • Kürzen Sie die Zeichenfolge (keine sehr gute Lösung)
  • Hinzufügen einer horizontalen Bildlaufleiste
  • Ändern Sie die Breite der Dropdownliste aus.


    Die folgende Funktion wird die Breite von dem Dropdown-Listenfeld innerhalb einer Combobox zurücksetzen.
    Es werden 2 Parameter (1 optional).
    ComboBox ist das ComboBox den wer hat Dropdown Breite geändert werden soll.
    Breite ist ein optionaler Parameter, der die Breite der Dropdownliste angibt. If
    die Breite ist kleiner als die Breite der ComboBox dann dieser Parameter wird ignoriert und die Breite auf die längste Zeichenfolge in der Combobox festgelegt.
    Prozedur SetComboDropDownWidth (ComboBox: ComboBox den; Breite: Integer =-1);
    var
    Ich TextLen: Longint;
    LF: LOGFONT;
    f: HFONT;
    beginnen
    Wenn Breite < ComboBox.Width dann beginnen
    FillChar(lf,SizeOf(lf),0);
    StrPCopy (lf.lfFaceName, ComboBox.Font.Name);
    lf.lfHeight: = ComboBox.Font.Height;
    lf.lfWeight: = FW_NORMAL;
    Wenn dann die FsBold in ComboBox.Font.Style
    lf.lfWeight: = lf.lfWeight oder FW_BOLD;
    f: = CreateFontIndirect(lf);
    Wenn (f <> 0) dann
    beginnen
    versuchen Sie
    ComboBox.Canvas.Handle: = GetDC(ComboBox.Handle);
    SelectObject(ComboBox.Canvas.Handle,f);
    versuchen Sie
    für I: = 0 to ComboBox.Items.Count-1 fangen
    TextLen: = ComboBox.Canvas.TextWidth(ComboBox.Items[I]);
    Wenn TextLen > Breite dann
    Breite: = TextLen;
    Ende;
    (* Standard-ComboBox Zeichnung ist Rect.Left + 2,
    Hinzufügen von zusätzlichen Abstand versetzt dies *)
    Inc (Breite, GetSystemMetrics(SM_CYVTHUMB) +
    GetSystemMetrics(SM_CXVSCROLL));
    Schließlich
    ReleaseDC (ComboBox.Handle, ComboBox.Canvas.Handle);
    Ende;
    Schließlich
    DeleteObject(f);
    Ende;
    Ende;
    Ende;
    SendMessage (ComboBox.Handle, CB_SETDROPPEDWIDTH, Breite, 0);
    Ende;
    Grüße
    Si-Carter
    Orcka Entwicklung









  • Die Dropdown-Breite der Combobox festlegen


    Die Dropdown-Breite der Combobox festlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


    Überschreitet die Länge einer Zeichenkette in eine Combobox die Breite der Combobox, die es gibt 3 Dinge, die getan werden können, sind Sie

  • Kürzen Sie die Zeichenfolge (keine sehr gute Lösung)
  • Hinzufügen einer horizontalen Bildlaufleiste
  • Ändern Sie die Breite der Dropdownliste aus.


    Die folgende Funktion wird die Breite von dem Dropdown-Listenfeld innerhalb einer Combobox zurücksetzen.
    Es werden 2 Parameter (1 optional).
    ComboBox ist das ComboBox den wer hat Dropdown Breite geändert werden soll.
    Breite ist ein optionaler Parameter, der die Breite der Dropdownliste angibt. If
    die Breite ist kleiner als die Breite der ComboBox dann dieser Parameter wird ignoriert und die Breite auf die längste Zeichenfolge in der Combobox festgelegt.
    Prozedur SetComboDropDownWidth (ComboBox: ComboBox den; Breite: Integer =-1);
    var
    Ich TextLen: Longint;
    LF: LOGFONT;
    f: HFONT;
    beginnen
    Wenn Breite < ComboBox.Width dann beginnen
    FillChar(lf,SizeOf(lf),0);
    StrPCopy (lf.lfFaceName, ComboBox.Font.Name);
    lf.lfHeight: = ComboBox.Font.Height;
    lf.lfWeight: = FW_NORMAL;
    Wenn dann die FsBold in ComboBox.Font.Style
    lf.lfWeight: = lf.lfWeight oder FW_BOLD;
    f: = CreateFontIndirect(lf);
    Wenn (f <> 0) dann
    beginnen
    versuchen Sie
    ComboBox.Canvas.Handle: = GetDC(ComboBox.Handle);
    SelectObject(ComboBox.Canvas.Handle,f);
    versuchen Sie
    für I: = 0 to ComboBox.Items.Count-1 fangen
    TextLen: = ComboBox.Canvas.TextWidth(ComboBox.Items[I]);
    Wenn TextLen > Breite dann
    Breite: = TextLen;
    Ende;
    (* Standard-ComboBox Zeichnung ist Rect.Left + 2,
    Hinzufügen von zusätzlichen Abstand versetzt dies *)
    Inc (Breite, GetSystemMetrics(SM_CYVTHUMB) +
    GetSystemMetrics(SM_CXVSCROLL));
    Schließlich
    ReleaseDC (ComboBox.Handle, ComboBox.Canvas.Handle);
    Ende;
    Schließlich
    DeleteObject(f);
    Ende;
    Ende;
    Ende;
    SendMessage (ComboBox.Handle, CB_SETDROPPEDWIDTH, Breite, 0);
    Ende;
    Grüße
    Si-Carter
    Orcka Entwicklung


  • Die Dropdown-Breite der Combobox festlegen

    Die Dropdown-Breite der Combobox festlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
    Die Dropdown-Breite der Combobox festlegen
    Wiezutun
    Freunden empfehlen
    • gplus
    • pinterest

    Kommentar

    Einen Kommentar hinterlassen

    Wertung