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
By Wiezutun
Die Dropdown-Breite der Combobox festlegen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.