Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Продвинутый ComboBox [D5]


AndreyV. ©   (2002-10-02 12:57:00) 

Подскажите где (или как сделать) найти такой комбобокс у которого можно выподающий список мышкой расширить.Ну или как вариант, чтоб сам расширялся по ширине самой длинной строки.


Игорь Шевченко   (2002-10-02 13:51:00) [1]

Приветствую, Song © (02.10.02 13:27)

Ага, сглючил. SETHORIZONTALEXTENT - Это чтобы Scrollbar появился в выпавшей части. А так, конечно, CB_SETDROPPEDWIDTH.

С уважением,


Song   (2002-10-02 13:27:00) [2]

Вот из проги своей (просто недавно делал, быстро и нашёл ;-) )

procedure TForm19.ComboBox1DropDown(Sender: TObject);
Var Wdth,t:Integer;
begin
With TComboBox(Sender) Do
IF Items.Count<>-1 then
Begin
Wdth:=Canvas.TextWidth(ExtractFileName(Items[0])); // Получаем ширину первого пункта и считаем её самой большой
IF Items.Count>0 then For t:=1 to Items.Count-1 Do IF Canvas.TextWidth(ExtractFileName(Items[t]))>Wdth then Wdth:=Canvas.TextWidth(ExtractFileName(Items[t])); // Проверяем есть ли больше. Если есть - переназначаем
IF Wdth+24>Perform(CB_GETDROPPEDWIDTH,0,0) then Perform(CB_SETDROPPEDWIDTH,Wdth+24,0); // Проверяем если ширина описывающего прямоугольника меньше чем найденная в Wdth, то увеличиваем выпавшую область.
End;
end;


Игорь Шевченко   (2002-10-02 13:23:00) [3]

SendMessage(ComboBox.Handle, CB_SETHORIZONTALEXTENT, ...)

В http://www.delphikingdom.com/treasury/combo.htmлежит ComboBox у которого есть соответствующая property. Но мышкой не таскается - это за вами.


Наверх

Титульная страница Поиск, карта сайта Написать письмо