Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

Высоту списка в 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 вся ветка

Форум: "KOL";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
3-1205492132
LoDr
2008-03-14 13:55
2008.09.14
Firebird, узнать имя сервера


2-1217529981
Noobik
2008-07-31 22:46
2008.09.14
Вопрос по скрипиту на delphi


15-1216813232
Сергей М.
2008-07-23 15:40
2008.09.14
Абракадабра в vCard - с каким бубном вокруг нее попрыгать ?


15-1216798715
axis_of_evil
2008-07-23 11:38
2008.09.14
на моей памяти этот вопрос задавали раз 5, но ..


4-1196680450
clickmaker
2007-12-03 14:14
2008.09.14
BackupWrite меняет размер файла?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский