![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение свойств scrollbar у TreeView [D7, WinXP]
Asker © (2007-08-26 16:50:00)В treeview если scrollbar не нужен то он прячется, а нужно чтоб становился серым. Решение проблемы теоретически заключается в следующем:
GetScrollInfo(LeftTreeView.Handle, SB_VERT, ScrlInfo);
ScrlInfo.fMask:=SIF_DISABLENOSCROLL;
SetScrollInfo(LeftTreeView.Handle, SB_VERT, ScrlInfo, true);
Но, не работает: скролл бар снова просто прячется если не нужен. Не могу понять в чем дело.
Asker (2007-08-27 23:36:00) [1]Спасибо за код Lacmus.
Lacmus (2007-08-27 13:50:00) [2]В чем дело не знаю, возможный вариант решения
procedure TForm44.TreeView1AdvancedCustomDraw(Sender: TCustomTreeView;
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
ScrollInfo: TScrollInfo;
begin
if Stage = cdPrePaint then with TreeView1 do begin
FillChar(ScrollInfo, SizeOf(ScrollInfo), 0);
ScrollInfo.cbSize := SizeOf(ScrollInfo);
ScrollInfo.fMask := SIF_ALL;
if GetScrollInfo(Handle, SB_VERT, ScrollInfo) then begin
if ((GetWindowLong(Handle, GWL_STYLE) and WS_VSCROLL) = 0) or (ScrollInfo.nPage = 0) then begin
ScrollInfo.fMask := SIF_DISABLENOSCROLL or SIF_ALL;
ScrollInfo.nPage := 1;
ShowScrollBar(Handle, SB_VERT, True);
SetScrollInfo(Handle, SB_VERT, ScrollInfo, True);
EnableScrollBar(Handle, SB_VERT, ESB_DISABLE_BOTH);
end else if Integer(ScrollInfo.nPage) <= ScrollInfo.nMax then
EnableScrollBar(Handle, SB_VERT, ESB_ENABLE_BOTH)
end
end
end;