You may find this hard to believe, but doing so is not straight forward.
To give you an example of down sizing the EDIT box of the combox to make room for a window button.
procedure TForm1.Button1Click(Sender: TObject);
Var
CB:TCOMBOBOXINFO;
Winfo:TWINDOWINFO;
begin
CB.cbSize := SizeOf(CB);
Winfo.cbSize := SizeOF(Winfo);
SendMessage(ComboBox1.Handle, CB_GetComboBoxInfo,0, PtrUint(@CB));
GetWindowInfo(CB.hwndItem,WInfo);
MoveWindow(CB.hwndItem,cb.rcItem.left,cb.rcItem.top,20,CB.rcItem.Height,True);
Caption := Winfo.rcClient.Width.ToString;
end;
That is test code btw, but it will shrink the edit box portion to 20 pixels wide.
More code needed to create a larger button in the now unused area.
So I have a suggestion, place a TPanel on the form and place the TComboBox within it. Make the Edit box obey to the left and top sides of the panel and make the panel wider to accommodate for a larger push button area.
Implement the panel's onClick and have it do the Combobox.DroppedDown := True;
also, you can set the itemWidth in the Combobox the same as the Panel width.
When all of this takes place, you will have an exposed area of the panel that will respond to your click and drop the combobox.
I suppose and temp is available, I could make up a demo project if needed.