hmmm, keine TreeView-Experten zur Stelle. Deshalb mal meine "hemdsärmlige" Lösung ...
Delphi-Quellcode:
procedure TfoMain.SelectTreeNode(Header:
String);
var i,maxVisibleNodes,D : Integer;
begin
with treeviewIdx
do begin
SetFocus;
for i:=0
to pred(Items.Count)
do
if Items[i].Text=Header
then begin
Items[i].Selected:=true;
Break;
end;
// Items[i].MakeVisible; << bringt markierten Eintrag in den sichtbaren Bereich
// allerdings "irgendwo" - nicht besonders "hübsch"
//
// deshalb alternativ, wenn markierter Eintrag z.B. in FensterMitte
// angezeigt werden soll, folgendes Konstrukt ...
maxVisibleNodes:=Height
div (Font.Size*2);
D:=(maxVisibleNodes-1)
div 2;
dec(i,D);
if i<0
then i:=0;
TopItem:=Items[i];
end;
end;
Das ganze funktioniert am getesteten Beispiel einwandfrei - aber die Annahme, dass die "Zeilenhöhe"
immer Font.Size*2 ist, erscheint mir doch ein wenig gewagt ...