VirtualStringTree 라는 콤포넌트의 스크롤바를 제어하려 합니다.
이 테이블이 주기적으로 refresh 하기때문에..
refresh 하게 되면 스크롤바는 맨 위로 가는데..
focus 위치를 기억해서 refresh 해도 그 위치를 유지 하고 싶습니다.
그래서 마우스 onClick 이벤트에서
procedure TF_SessionManager.VST_SessionClick(Sender: TObject);
var
Data : PCustRec;
begin
if VST_Session.SelectedCount > 0 then
begin
Data := VST_Session.GetNodeData(VST_Session.GetFirstSelected);
m_selectFocusIndex := Data.index;
m_selectScrollPos := GetScrollPos(VST_Session.Handle, SB_VERT);
F_Debug.Display.Lines.Add('idx:'+IntToStr(m_selectFocusIndex)+' pos'+IntToStr(m_selectScrollPos));
end;
end;
이렇게 해줬구요
refresh 하는 부분에서는
Selected[Node] := true;
SetScrollPos( VST_Session.Handle, SB_VERT, m_selectScrollPos, True );
이렇게 해줬는데..
Node선택(Focus) 하고 스크롤바는 원하는 위치로 옮겨졌는데..
스크롤바만 움직이고 내용은 움직이지 않는군요..
내용까지 움직이고 싶으면 어떻게 해야 하는지요...?
참고로 ScrollBy(x, y); 라는걸