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