Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.48 MB
Время: 0.007 c
15-1260749938
Kerk
2009-12-14 03:18
2010.02.21
Ленин в мозгах поколения ЕГЭ


2-1261409951
JohnKorsh
2009-12-21 18:39
2010.02.21
API для беспроводных сетей.


15-1260171051
12
2009-12-07 10:30
2010.02.21
Нашел книгу по администрированию MSSQL


2-1258016335
Tornado
2009-11-12 11:58
2010.02.21
Не могу сменить значек приложения


2-1261467325
pg81
2009-12-22 10:35
2010.02.21
Как передать адрес метода из dll в приложение и присвоить его соб





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский