|
#1
|
|||
|
|||
ComboBox
Уважаемые эксперты, у компонента ComboBox свойства:
Код:
Style = csOwnerDrawVariable; DropDownCount = 8; высота строк задается в обработчике ComboBox1MeasureItem: Код:
procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin case Index of 0: Height := 16 ; 1: Height := 40 ; 2: Height := 16 ; end end; Проблема в том, что при выпадении списка, его высота намного меньше этих трех строк (хотя DropDownCount = 8). Может возможно задать высоту выпадающего списка программным путем ? |
#2
|
||||
|
||||
Не поленись, покопайся в исходниках Дельфи. Там везде предполагается, что высота итема фиксирована.
Код:
procedure TCustomCombo.AdjustDropDown; ... SetWindowPos(FDropHandle, 0, 0, 0, Width, ItemHeight * Count + Height + 2, SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_NOREDRAW or SWP_HIDEWINDOW); ... end; ... function TCustomComboBox.GetItemHt: Integer; begin if FStyle in [csOwnerDrawFixed, csOwnerDrawVariable] then Result := FItemHeight else Result := Perform(CB_GETITEMHEIGHT, 0, 0); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
angvelem большое спасибо за помощь, после Вашего сообщения проблему сразу же решил (перекрыл метод AdjustDropDown своим, с указанием в процедуре SetWindowPos нужной высоты)
|