Einzelnen Beitrag anzeigen

pstruh
(Gast)

n/a Beiträge
 
#2

Re: TreeView: Anzahl der sichtbaren Einträge?

  Alt 4. Sep 2007, 21:16
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 ...
  Mit Zitat antworten Zitat