Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Прокрутка TreeView, чтобы держать выделение посередине

01.01.2007
procedure TMyForm.TreeChange(Sender: TObject; Node: TTreeNode);
 
var
   i
: integer;
   pp
, cp : TTreeNode;
 
begin
   
if Assigned(Tree.Selected) then
     
begin
       cp
:= Tree.Selected;
       pp
:= cp;
       
for i := 1 to Round(Tree.Height/30) do
         
if cp <> nil then
           
begin
             pp
:= cp;
             cp
:= cp.GetPrevVisible;
           
end;
       
Tree.TopItem := pp;
     
end;
 
end;

Взято с https://delphiworld.narod.ru