Alguna vez lo hice así:
Código Delphi
[-]procedure TFormPrincipal.EquiposDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if y > (TreeView.Top+TreeView.Height) - 10 then
begin
TreeView.ScrollBy(0,-2);
end;
end;
Lo único que he añadido es el "- 10" porque si el ratón, mientras se arrastra un item, se sale fuera del Treeview, ya no responde el evento dragover, es lógico, el ratón está fuera del Treeview.
De esta forma, cuando el ratón está a 10 pixeles en el lado inferior del treeview, es cuando se ejecuta el Scroll automático.
Saludos