![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Продвинутый 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. Но мышкой не таскается - это за вами.