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

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

Горизонтальный скролл в ListBox


Igit ©   (2003-01-19 13:14:00) 

Вот нет в MCK этого сабжа? Ставлю Мультискролл, а он не появляется, приходиться через скроллбокс, но так не удобно... как реализовать???


Igit   (2003-09-23 23:47:00) [1]

На добавление строки, процедуру написал, добавляет строку и пересчитывает после этого


Gandalf   (2003-09-23 20:54:00) [2]

Ты на какое событие повесил код, может у тебя пересчет постоянно идет...


Igit   (2003-09-23 10:43:00) [3]

Все, понял, забыл j обнулять, но он все равно дрыгается, т.е. мышкой зацепил, перевел куда нужно, а он показывает что в самом начале, хотя в самом конце...


Igit   (2003-09-23 10:25:00) [4]

т.е. он появился внизу listbox'а, с виду длинный такой, а у меня в нем длинная строчка, чтоб посмотреть её конец я мышкой пытаюсь передвинуть скролл а он на месте дрыгается, и все...


Gandalf   (2003-09-23 08:50:00) [5]

Т.е.?


Igit   (2003-09-22 07:33:00) [6]

Понятно!
Но... он не двигается...


Gandalf   (2003-09-21 21:42:00) [7]

Я так:
 ListBox1.Style:=ListBox1.Style or WS_HSCROLL;
 for i:=0 to Self.ListBox1.Count-1 do
   if ListBox1.Canvas.TextWidth(Self.ListBox1.Items[i])>j then
     j:=ListBox1.Canvas.TextWidth(Self.ListBox1.Items[i]);
 SendMessage(ListBox1.Handle,LB_SETHORIZONTALEXTENT,j,0);


Igit   (2003-09-21 16:30:00) [8]

блин... не получается... вот как я делаю

Procedure ListBox1Add(s:string);
var i, j: Integer;
begin
form1.ListBox1.Add(s);
for i:=0 to form1.ListBox1.Count-1 do
if Form1.ListBox1.Canvas.TextWidth(Form1.ListBox1.Items[i]+'x')>j
         then j:=Form1.ListBox1.Canvas.TextWidth(Form1.ListBox1.Items[i]+'x');
SendMessage(Form1.ListBox1.Handle,LB_SETHORIZONTALEXTENT,j,0);
end;


а как создать, или установить в MCK стиль WS_HSCROLL?


Gandalf   (2003-09-19 22:09:00) [9]

Да нет все ок - только не забывай добавлять учет ширины вертильного бара.


3APA3A   (2003-09-19 01:46:00) [10]

Да, но как-то странно это работает...Не той длины какой надо...  Самые длинные строки обрезает...

Код такой:
 for i:=0 to Self.ListBox1.Count-1 do
  if ListBox1.Canvas.TextWidth(Self.ListBox1.Items[i]+'x')>j        then j:=ListBox1.Canvas.TextWidth(Self.ListBox1.Items[i]+'x');
 SendMessage(ListBox1.Handle,LB_SETHORIZONTALEXTENT,j,0);


Gandalf   (2003-01-31 21:15:00) [11]

Еще есть пример на "Королевсте Дельфи".


blackalex   (2003-01-20 11:50:00) [12]

Тут еще есть классный примерчик
http://www.scalabium.com/faq/dct0010.htm


blackalex   (2003-01-20 11:42:00) [13]

Реализовать можно через сообщение LB_SETHORIZONTALEXTENT. Пример здесь
http://community.borland.com/article/0,1410,15531,00.html
Также ListBox должен быть создан with WS_HSCROLL  style


Наверх

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