Главная страница
    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.47 MB
Время: 0.046 c
2-1217490630
Sergey2
2008-07-31 11:50
2008.09.14
проблема с Вистой


2-1217967486
krem
2008-08-06 00:18
2008.09.14
Memo


2-1217946143
Krolm
2008-08-05 18:22
2008.09.14
Модуль для создания списка ссылок из html страницы


9-1165756032
darkangel
2006-12-10 16:07
2008.09.14
3д мир и клики мышью. (OpenGL)


2-1217583545
Vlad Oshin
2008-08-01 13:39
2008.09.14
cxGrid от DevExpress на форме в dll. Не выбирается мышкой строка.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский