Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.08.2012, 16:35
expmrs expmrs вне форума
Прохожий
 
Регистрация: 06.06.2012
Сообщения: 5
Репутация: 10
По умолчанию 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  
Старый 12.08.2012, 21:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не поленись, покопайся в исходниках Дельфи. Там везде предполагается, что высота итема фиксирована.
Код:
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;
код взят из 7-ой версии.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 12.08.2012, 22:06
expmrs expmrs вне форума
Прохожий
 
Регистрация: 06.06.2012
Сообщения: 5
Репутация: 10
По умолчанию

angvelem большое спасибо за помощь, после Вашего сообщения проблему сразу же решил (перекрыл метод AdjustDropDown своим, с указанием в процедуре SetWindowPos нужной высоты)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter