Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView: Anzahl der sichtbaren Einträge? (https://www.delphipraxis.net/98971-treeview-anzahl-der-sichtbaren-eintraege.html)

pstruh 4. Sep 2007 19:48


TreeView: Anzahl der sichtbaren Einträge?
 
Noch 'ne Frage zum TreeView...
Habe jetzt noch intensiver gesucht und wieder nix gefunden: Im StringGrid gibts die property "VisibleRowCount" - etwas vergleichbares habe ICH zum TreeView nicht gefunden. Gibt es einen Weg, die maximale Anzahl der im Fenster sichtbaren "Zeilen" (also Nodes) zu ermitteln? Der Weg, dies über die für das Tree festgelegte Font-Größe zu berechnen erscheint mir etwas "hemdsärmlig" ...
Gruß aus Hamburg

pstruh 4. Sep 2007 20:16

Re: TreeView: Anzahl der sichtbaren Einträge?
 
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 ...

marabu 4. Sep 2007 21:07

Re: TreeView: Anzahl der sichtbaren Einträge?
 
Hallo Ralph

geht das bei dir nicht auch so?

Delphi-Quellcode:
var
  n: Integer;
begin
  with TreeView do
    n := TreeView_GetVisibleCount(Handle);
end;
Gute Nacht

pstruh 4. Sep 2007 21:23

Re: TreeView: Anzahl der sichtbaren Einträge?
 
Hallo Achim,
Wow, ist genial - das findet man (wohl?) nicht mit F1. Also nicht nur die Hilfe konsultieren, sondern auch mal in die unit Commctrl 'reinschauen! Vielen Dank, habe heute Abend wieder 'ne Menge dazugelernt!
Viele Grüße und Gute Nacht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz