Mar
25
Установить ширину горизонтального скролбара в ListBox
01:05
Как обращаться к встроенным полосам прокрутки? [D7, WinXP]
FunkyByte © (24.03.05 20:51)
Доброго времени суток, уважаемые мастера. У меня такой вопрос: как можно обращаться к методам и свойствам полос прокрутки, встроенным в другие компоненты (например, к полосам прокрутки, появляющимся в ListBox'е, когда элементы в списке перестают умещаться в сам список)?
Заранее спасибо.
***
rOOse © (24.03.05 21:32) [2]
Приведённый код определяет ширину в пикселях самой длинной строки списка. Затем он использует сообщение LB_SETHORIZONTALEXTENT, чтобы установить ширину горизонтального скролбара в пикселях. Два дополнительных пикселя добавленные к MaxWidth служат для стрелки в правом углу list box-а.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1111686718&n=0
FunkyByte © (24.03.05 20:51)
Доброго времени суток, уважаемые мастера. У меня такой вопрос: как можно обращаться к методам и свойствам полос прокрутки, встроенным в другие компоненты (например, к полосам прокрутки, появляющимся в ListBox'е, когда элементы в списке перестают умещаться в сам список)?
Заранее спасибо.
***
rOOse © (24.03.05 21:32) [2]
procedure TForm1.FormCreate(Sender: TObject);
var
i, MaxWidth: integer;
begin
MaxWidth := 0;
for i := 0 to LB1.Items.Count - 1 do
if MaxWidth < LB1.Canvas.TextWidth(LB1.Items.Strings[i]) then
MaxWidth := LB1.Canvas.TextWidth(LB1.Items.Strings[i]);
SendMessage(LB1.Handle, LB_SETHORIZONTALEXTENT, MaxWidth+2, 0);
end;
Приведённый код определяет ширину в пикселях самой длинной строки списка. Затем он использует сообщение LB_SETHORIZONTALEXTENT, чтобы установить ширину горизонтального скролбара в пикселях. Два дополнительных пикселя добавленные к MaxWidth служат для стрелки в правом углу list box-а.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1111686718&n=0