54.1 Übersicht

Die Treeview-Klasse (Baumansicht) leitet sich von der Area-Klasse ab und kann verwendet werden, um komplexe Datenstrukturen mithilfe einer Baumstruktur zu visualisieren. Die Daten werden als Hierarchie dargestellt, in der jedes Element eine unendliche Anzahl von Unterelementen enthalten kann. Elemente, die Unterelemente enthalten, werden Knoten genannt, während Elemente ohne Unterelemente Blätter heissen. RapaGUIs Treeview-Klasse ist sehr mächtig und unterstützt mehrspaltige Bäume, Auswahlkästchen (Checkboxen), bearbeitbare Knoten und Blätter sowie Symbole für die einzelnen Baumansicht-Elemente.

Beim Erstellen einer Baumansicht im XML-Code müssen Sie immer mindestens eine Spalte hinzufügen. Dies geschieht mit Treeviewcolumn-Klasse (Baumansichtspalten). Hier ist ein Beispiel für eine minimale Baumansicht-Definition mit nur einer einzigen Spalte:

 
<treeview>
   <column/>
</treeview>

Es ist auch möglich, einige Einträge zum Zeitpunkt der XML-Definition in die Baumansicht einzufügen. Dies kann mit den Tags <node> und <leaf> geschehen, die sich auf Treeviewnode-Klasse (Baumansichtknoten) bzw. Treeviewleaf-Klasse (Baumansichtblätter) beziehen. Ein Knoten der Baumansicht enthält immer nur einen einzigen Eintrag, auch bei mehrspaltigen Baumansichten. Blätter hingegen müssen jedoch so viele Einträge definieren, wie es Spalten in der Baumansicht gibt. Sie müssen also ein <item>-Tag pro Spalte innerhalb des <leaf> verwenden, um diese einzelnen Elemente zu erstellen. Hier ist eine Beispieldefinition:

 
<treeview>
   <column/>
   <node name="CPU">
      <leaf><item>Model: Motorola MPC 7447 Apollo V1.1</item></leaf>
      <leaf><item>CPU speed: 999 Mhz</item></leaf>
      <leaf><item>FSB speed: 133 Mhz</item></leaf>
      <leaf><item>Extensions: performancemonitor altivec</item></leaf>
   </node>
   <node name="Machine">
      <leaf><item>Machine name: Pegasos II</item></leaf>
      <leaf><item>Memory: 524288 KB</item></leaf>
      <leaf><item>Extensions: bus.pci bus.agp</item></leaf>
   </node>
   <node name="Expansion buses">
      <node name="PCI/AGP">
         <leaf><item>Vendor 0x11AB Device 0x6460</item></leaf>
      </node>
   </node>
   <node name="Libraries">
      <leaf><item>0x6c7d4a58: exec.library V53.34</item></leaf>
   </node>
   <node name="Devices">
      <leaf><item>0x6ff8fba4: ramdrive.device V52.6</item></leaf>
   </node>
   <node name="Tasks">
      <node name="input.device">
         <leaf><item>Stack: 0x6ff4b000 - 0x6ff5b000</item></leaf>
         <leaf><item>Signals: SigWait 0x00000000</item></leaf>
         <leaf><item>State: Task (Waiting)</item></leaf>
      </node>
   </node>
</treeview>

Wie Sie sehen können, haben wir eine einspaltige Baumansicht mit dem obigen XML-Code erstellt. So müssen wir <item> nur einmal pro <leaf>-Definition verwenden. Für mehrspaltige Bäume müssten Sie so viele <item>-Tags verwenden, wie es Spalten in Ihrer Baumansicht gibt. Siehe Treeviewleaf-Klasse für Details. Siehe Treeviewleafitem-Klasse für Details.

Im Beispiel haben wir auch das Attribut Treeviewnode.Name verwendet, um jedem unserer Knoten einen Namen hinzuzufügen. Es gibt noch einige weitere Attribute, mit denen Sie das Aussehen Ihrer Knoten anpassen können. Siehe Treeviewnode-Klasse für Details. Um beispielsweise auf ein Element (Knoten oder Blatt) in einem Treeview-Objekt zu verweisen, müssen Sie ihm eine eindeutige ID-Zeichenfolge zuweisen. Sie können dann auf dieses Element verweisen, indem Sie einfach diesen ID-Zeichenfolge verwenden. IDs werden entweder bei der Objekterstellung im XML-Code oder beim Aufruf von Treeview.InsertNode oder Treeview.InsertLeaf vergeben.

Im obigen Beispiel definieren wir keine Attribute für die Spalte der Baumansicht. Es ist jedoch möglich, das Aussehen von Baumspalten anzupassen. Sie können beispielsweise das Attribut Treeviewcolumn.Title verwenden, um jeder Ihrer Spalten eine Titelleiste hinzuzufügen. Darüber hinaus können Sie Ihren Spalten auch Auswahlkästchen (Checkboxen) hinzufügen und die Bearbeitung von Spaltenelementen erlauben. Siehe Treeviewcolumn-Klasse für Details.

Beachten Sie, dass RapaGUI möglicherweise zwei verschiedene Arten von Widgets für diese Klasse verwendet: Wenn Sie eine Strukturansicht erstellen, die keine erweiterten Funktionen (z.B. mehrere Spalten, Kontrollkästchen, bearbeitbare Elemente, Dekorationen) verwendet, erstellt RapaGUI eventuell ein einfacheres Baumansichts-Widget für Sie, weil einige Betriebssysteme zwei verschiedene Baumansicht-basierte Widgets anbieten. RapaGUI wird das Light-Widget verwenden, falls Ihre Baumansicht keine der erweiterten Funktionen verwendet, da es schneller ist. Wenn Sie das nicht möchten, können Sie RapaGUI zwingen, immer eine vollständige Baumansicht zu verwenden, indem Sie das Attribut Treeview.ForceMode auf das entsprechende Tag setzen. Siehe Treeview.ForceMode für Details.


Navigation zeigen