Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

Высоту списка в ComboBox?   Найти похожие ветки 

 
Вячеслав   (2007-10-19 23:27) [0]

Delphi7, KOL 2.83

Понадобилось испозовать ComboBox c OwnerDrawVariable.
Обработчики onMeasureItem и onDrawItem назначил и код прописал. Все работает без проблем. Но высота выпадающего списка слишком маленькая. Если объявить USE_DROPDOWNCOUNT высота становится стандартной, но мне этого все равно мало.

Вопрос: Как изменить высоту выпадающего списка в ComboBox"e?

Пробовал

{
 SetWindowPos( cb.Handle, 0, 0, 0, cb.Width, 700,
               SWP_NOMOVE + SWP_NOZORDER + SWP_NOACTIVATE + SWP_NOREDRAW +
               SWP_HIDEWINDOW);

 SetWindowPos( cb.Handle, 0, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
               + SWP_NOZORDER + SWP_NOACTIVATE
               + SWP_NOREDRAW + SWP_SHOWWINDOW);
}


MoveWindow(cb.Handle, cb.Left, cb.Top, cb.width, 700, true);


cb.Height := 700;

Код добавлял в Combo.onDropDown и Button.onClick.

Ничего не помогает.


 
Vladimir Kladov ©   (2007-10-20 09:03) [1]

USE_DROPDOWNCOUNT


 
Вячеслав   (2007-10-20 19:57) [2]


> USE_DROPDOWNCOUNT

Сютуация такая.

 a) Стандартный ComboBox
 b) coOwnerDrawVariable ComboBox (3 строки: 50px, 20px, 20px)

1) Если НЕ ИСПОЛЬЗОВАТЬ USE_DROPDOWNCOUNT
 a) Высота списка стандартная.
 b) Высота списка 50px.

 Изменить высоту списка в любом случае не получается.

2) Если ИСПОЛЬЗОВАТЬ USE_DROPDOWNCOUNT
 a) Высота списка  равна количество строк * высоту первой строки
 b) Высота списка равно (3*50) = 150px, а должна быть (50+20+20)=90px.

 Изменить высоту списка в любом случае не получается, что не удивительно, так как она задается свойством DropDownCount.

3) Если НЕ ИСПОЛЬЗОВАТЬ USE_DROPDOWNCOUNT и в процедуре KOL.ComboboxDropDown закоментировать вызовы SetWindowPos/
 a) Высота списка стандартная, высоту изменить можно.
 b) Высота списка стандартная, высоту изменить нельзя.

4) Если ИСПОЛЬЗОВАТЬ USE_DROPDOWNCOUNT и в процедуре KOL.ComboboxDropDown закоментировать вызовы SetWindowPos/
 a) Высота списка стандартная, высоту изменить можно.
 b) Высота списка стандартная, высоту изменить нельзя.

И вообще работу функции KOL.ComboboxDropDown для coOwnerDrawVariable считаю некорректной. Ведь высота строк в списке разная, а высота списка задается равной высоте первой строки умноженной на DropDownCount.

ВОПРОС: Как изменить высоту выпадающего списка в coOwnerDrawVariable ComboBox


 
Vladimir Kladov ©   (2007-10-21 07:06) [3]

fDropDownProc присвойте свою процедуру. Больше рассуждаете, что возможно, что невозможно.


 
Вячеслав   (2007-10-23 20:23) [4]


> Больше рассуждаете, что возможно, что невозможно.


Мудрый совет.

Поспал, отдохнул, подумал, сделал отдельный проект для изучения данного вопроса и все мне стало ясно.

Признаю, был не прав.

Выводы:
1) Изменить высоту, выпадающего списка, можно, но...
2) Задается максимальная высота, то есть нельзя установить высоту больше чем ItemHeight * Count
3) Kol.ComboboxDropDown работает неверно с coOwnerDrawVariable списками, но использование coOwnerDrawVariable случай не типичный, поэтому простительно.
4) ComboBox c coOwnerDrawVariable работает очень странно :( и KOL скорее всего не виноват.

Вот набросал примерчик, буду благодарен если кто-нибудь понимающий глянет. http://slil.ru/25013106


 
Vladimir Kladov ©   (2007-10-24 15:45) [5]

А на VCL вы пробовали? (Я-то вообще не сталкивался, я вообще ни разу не видел комбобокса с переменным размером элементов, не только в исходниках, но даже в других программах).


 
Вячеслав   (2007-10-24 22:52) [6]


> А на VCL вы пробовали?


Попробовал. :( На VCL вообще жуть.
1. Назначил обработчик onDrawItem, в нем, просто, заливаю прямоугольник цветом. Все ОК, но при выборе элемента, VCL услужливо рисует рамку выделения. :(

2. Высоту списка в onDropDown изменить не получается.

3. Обработкой события формы WM_COMMAND+CBN_DROPDOWN тоже.



Страницы: 1 вся ветка

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
3-1206004854
Alexey
2008-03-20 12:20
2008.09.14
Работа с таблицами Fox Pro в Delphi 7


15-1216391681
shlst
2008-07-18 18:34
2008.09.14
Вирус напал необычный или что это вообще?


2-1217581687
pohil
2008-08-01 13:08
2008.09.14
Выполнение функции по ее имени


15-1216271482
Dennis I. Komarov
2008-07-17 09:11
2008.09.14
MS WinXP SP3


2-1217575300
DeeNamid
2008-08-01 11:21
2008.09.14
Пинг