Witam,
W swojej aplikacji potrzebuje poszerzyć paski przewijania dla komponentu TreeView. W tym celu na formie obok TreeView umieszczam TScrollbar którym chce sterowac jego przewijaniem. Poniższa funkcja pobiera stan oryginalnego paska i przypisuje do mojego. Wszystko to działa wyśmienicie na Windows XP z ustawionym wyglądem "Styl wyglądu Windows XP". Ale gdy przełącze wygląd na "Styl klasyczny Windows" to funkcja GetScrollInfo zawsze zwraca "false" i nie udaje się odczytać ustawień oryginalnego paska z TreeView. Czy ktoś z Formowiczów spotkał się może z taką sytuacją że funkcja GetScrollInfo działa lub nie w zależności od wyglądu ustawionego w systemie? Nie mam pojęcia jak temu zaradzić będe wdzięczny za każde sugestie.
procedure TfrmMain.DrzewoGrupExpanded(Sender: TObject; Node: TTreeNode);
var screlInfo: SCROLLINFO;
j:integer;
begin
// VERTICAL SCROLLBAR
screlInfo.fMask := SIF_ALL;
Drzewo.visible := false; //chowanie drzewa na czas operacji
if false = GetScrollInfo(Drzewo.Handle,SB_VERT,screlInfo) then
showmessage('get last error '+inttostr(getlasterror))
else
begin
SetScrollInfo(sbrV.Handle,SB_CTL,screlInfo,true);
sbrVGrupy.Visible := DrzewoGrup.PotrzebnyPasekVert;
if sbrV.Visible and (screlInfo.nMax > screlInfo.nMin) then begin
sbrV.Min := screlInfo.nMin;
sbrV.Max := screlInfo.nMax + 1;
end;
end;
Drzewo.visible := false;
SendMessage(DrzewoGrup.Handle, WM_VSCROLL,integer(scTop), 0);
if sbrV.Visible then begin
for j:= 0 to sbrVGrupy.Position -1 do
SendMessage(DrzewoGrup.Handle, WM_VSCROLL,integer(scLineDown), 0);
end;
Drzewo.visible := true;