How to : Setting the dropdown width of a combobox

Опубликовано: 28 Март 2026
на канале: How to : Tips and Trick
30
0

Setting the dropdown width of a combobox

When the length of a string in a combobox exceeds the width of the combobox there are 3 things that can be done they are

Shorten the string (not a very good solution)

Add a horizontal scroll bar

Change the width of the drop down list.



The following function will reset the width of the dropdown listbox within a combobox.

It takes 2 parameters (1 optional).

ComboBox is the TComboBox whos dropdown width is to be changed.

Width is an optional parameter specifying the width of the drop down list. If

the width is less than the width of the ComboBox then this parameter will be ignored and the width will be set to the longest string in the combobox.

procedure SetComboDropDownWidth(ComboBox: TComboBox; Width: Integer = -1);

var

I, TextLen: Longint;

lf: LOGFONT;

f: HFONT;

begin

if Width 0) then

begin

try

ComboBox.Canvas.Handle := GetDC(ComboBox.Handle);

SelectObject(ComboBox.Canvas.Handle,f);

try

for I := 0 to ComboBox.Items.Count -1 do begin

TextLen := ComboBox.Canvas.TextWidth(ComboBox.Items[I]);

if TextLen > Width then

Width := TextLen;

end;

(* Standard ComboBox drawing is Rect.Left + 2,

adding the extra spacing offsets this *)

Inc(Width, GetSystemMetrics(SM_CYVTHUMB) +

GetSystemMetrics(SM_CXVSCROLL));

finally

ReleaseDC(ComboBox.Handle, ComboBox.Canvas.Handle);

end;

finally

DeleteObject(f);

end;

end;

end;

SendMessage(ComboBox.Handle, CB_SETDROPPEDWIDTH, Width, 0);

end;

regards

Si Carter

Orcka Development