![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент типа TComboBox [D7, WinXP]
Shnabs © (2005-03-01 20:28:00)Можно как-нибудь в ComboBox'е, в стиле csSimple, сделать горизонтальный скроллбар?
Fenik (2005-03-02 20:06:00) [1]> Shnabs
Что тебе мешает взять Edit + ListBox и написать пару обработчиков событий?
Shnabs (2005-03-02 00:49:00) [2]Ну че так и нет идей по этому поводу? Спасибо Fenik, пригодилось, только там для ComboBox.Style = csDropDown or csDropDownList, а мне еще нужно для csSimple, а по поводу oslep, у меня знаний не хватает может что по проще есть?
Shnabs (2005-03-01 21:15:00) [3]У меня есть кодик для Listbox'а, который создает горизонтальный скролл, если строка больше ширины объекта:
var i1, MaxWidth: integer;
begin
MaxWidth := 0;
for i1 := 0 to ListBox1.Items.Count-1 do
if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i1]) then
MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i1]);
SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+8, 0);
end;
Пробовал для Combobox'а, что-то не выходит.
oslep (2005-03-01 21:04:00) [4]Да, чуть не забыл, для доступа к защищенным полям и методам ,необходимо, ест-нно, объявление, если вы не в курсе:
type
TComboBoxAccess = class(TComboBox)
end;
oslep (2005-03-01 20:59:00) [5]Строго говоря, можно. Для этого:
procedure TForm1.FormCreate(Sender: TObject);
var
ListHandle : HWnd;
begin
ComboBox1.HandleNeeded;
ListHandle := TComboBoxAccess(ComboBox1).ListHandle;
ShowScrollBar(ListHandle, SB_HORZ, True);
end;
Однако обрабатывать реакцию на передвижение ползунка придется ручками, в новой оконной процедуре для ListHandle
Fenik (2005-03-01 20:59:00) [6]Возможно тебе поможет это:
http://delphibase.spb.ru/?action=viewfunc&topic=vclservice&id=10702