Форум: "KOL";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
ВнизГоризонтальная полоса прокрутки в 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 вся ветка
Форум: "KOL";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c