Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.21;
Скачать: CL | DM;

Вниз

Горизонтальная полоса прокрутки в ListBox   Найти похожие ветки 

 
ElectriC ©   (2007-03-26 18:27) [0]

Как добавить горизонтальную полосу прокрутки (scrollbar) в ListBox?
В VCL я делал бы так:

var  
 i, MaxWidth: integer;  
begin  
 MaxWidth := 0;  
 for i := 0 to ListBox1.Items.Count - 1 do  
 if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]) then  
   MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[i]);  
 SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);

А в KOL не помогает.
P.S. В KOL импользовал код:

procedure TMyProject.ListBox1Show(Sender: PObj);
var i, MaxWidth : Integer;
begin
 MaxWidth := 0;
 for i := 0 to ListBox1.Count - 1 do
 if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.Items[i]) then
   MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
 SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth + 5, 0);
end;


 
Vladimir Kladov   (2007-03-26 18:47) [1]

Что не помогает? Вы же не привели вариант кода для KOL. Этот вариант точне не будет работать, он даже не откомпилируется, из-за Strings.

Так же, подозреваю, не будет работать Canvas.TextWidth вне пределов OnPaint - так он устроен. Создайте bitmap 1x1, его канве Font.Assign от шрифта вашего листбокса, и у него спрашивайте TextWidth.

А SendMessage и Handle - там все как было.


 
ElectriC ©   (2007-03-26 20:24) [2]


> Вы же не привели вариант кода для KOL.


В KOL вот этот код -


> procedure TMyProject.ListBox1Show(Sender: PObj);var i, MaxWidth
> : Integer;begin  MaxWidth := 0;  for i := 0 to ListBox1.
> Count - 1 do  if MaxWidth < ListBox1.Canvas.TextWidth(ListBox1.
> Items[i]) then    MaxWidth := ListBox1.Canvas.TextWidth(ListBox1.
> Items[i]);  SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT,
>  MaxWidth + 5, 0);end;


 
ElectriC ©   (2007-03-26 22:49) [3]

Если просто послать сообщение ListBox"у(SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, 500, 0)), то горизонтальная полоса прокрутки
не появляется. Можете объяснить, почему?


 
ElectriC ©   (2007-03-27 17:23) [4]

Дак, как, всё-таки, добавить горизонтальную прокрутку к ListBox"y?
(SendMessage(ListBox1.Handle, LB_SETHORIZONTALEXTENT, 500, 0)) - не работает)!!!


 
brink   (2007-07-12 11:41) [5]

А у меня на С# работает :P


 
MTsv DN ©   (2007-07-12 12:01) [6]

> А у меня на С# работает :P
Заблудился видимо 8)

> Дак, как, всё-таки, добавить горизонтальную прокрутку к ListBox"y?
ListBox1.Style := ListBox1.Style or WS_HSCROLL;


 
MTsv DN ©   (2007-07-12 12:02) [7]

А лучше так:
ListBox1.Style := ListBox1.Style or WS_HSCROLL xor WS_VSCROLL;


 
homm ©   (2007-07-12 12:03) [8]

> А у меня на С# работает :P

Слышал, что C# истинно кросплатформенный. Не могу поверить что в нем можно вызвать SendMessage :)


 
ElectriC ©   (2007-07-17 19:42) [9]

Гор. полоска включается, но работает неправильно, т.б. вообще не работает(((


 
Vladimir Kladov   (2007-07-17 20:25) [10]

procedure TForm1.KOLForm1Show(Sender: PObj);
begin
 ListBox1.Perform( LB_SETHORIZONTALEXTENT, 250, 0 );
end;


Читайте MSDN, там всё написано про list box (не люблю я его).


 
ElectriC ©   (2007-07-17 20:47) [11]

Спасибо.


 
имя   (2007-08-08 23:01) [12]

Удалено модератором


 
ElectriC ©   (2007-08-09 16:37) [13]


> procedure TForm1.KOLForm1Show(Sender: PObj);begin  ListBox1.
> Perform( LB_SETHORIZONTALEXTENT, 250, 0 );end;

Этот способ, всё равно, не работает!


 
Vladimir Kladov   (2007-08-09 16:47) [14]

Долго пробовали. У меня работает. Но опция тоже нужна.

 TListOption = ( loNoHideScroll, loNoExtendSel, loMultiColumn, loMultiSelect,
                 loNoIntegralHeight, loNoSel, loSort, loTabstops,
                 loNoStrings, loNoData, loOwnerDrawFixed, loOwnerDrawVariable,
                 loHScroll );
 {* Options for ListBox (see NewListbox).
    To use loHScroll, you also have to send LB_SETHORIZONTALEXTENT with a
    maximum width of a line in pixels (wParam)! }
 TListOptions = Set of TListOption;


 
имя   (2008-01-22 11:37) [15]

Удалено модератором


 
имя   (2008-05-24 16:13) [16]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2010.02.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
15-1260542319
TUser
2009-12-11 17:38
2010.02.21
Видеокарту никому не надо?


2-1261130070
pg81
2009-12-18 12:54
2010.02.21
Как проверить существет ли еще форма в frm:TMyTypeForm?


2-1261136409
Who_is_you?
2009-12-18 14:40
2010.02.21
Выход по времени ожидания


2-1261139465
ford
2009-12-18 15:31
2010.02.21
TIdHTTP и Transfer-Encoding: chunked


11-1190008553
Nikfel
2007-09-17 09:55
2010.02.21
Как добавить изображение в TKolPopupMenu.