![]() |
Strukturelles Diagramm aus einem TTreeview erzeugen - WIE?
Hallo Wissende,
ich möchte mir aus einem TTreeview ein strukturelles Diagramm erstellen, ohe die Struktur des Treeviews kennen zu müssen. Dabei will ich ungefähr folgendes erreichen. Angenommene Struktur des Treeviews: -CEO Chef der Firma --Controlling ---Tante Müller ---Onkel Mike --Produktion ---Horst Kürschner ---Emil Schnitzer ---Jürgen Schmidt So soll dann das Diagramm ungefähr aussehen __| CEO Chef der Firma |__ |Controlling|___|Produktion -Tante Müller___-Horst Kürschner -Onkel Mike_____-Emil Schnitzer ________________-Jürgen Schmidt Also die Positionen in der Firma sollen durch Buttons oder Panels realisiert werden und dann mit Pfeilen verbunden werden. Das lies sich hier jetzt schlecht visulisieren. Nun interessiert mich natürlich folgendes: 1. Wie kann ich die Childs der ersten Ebene auslesen? Und was, wenn darunter noch eine (oder mehrere) Strukturelle Ebene(n) kommt(en)? Das wäre dann sicher was rekursives!? 2. Wie müsste ich ungefähr mit der Positions-Logik (x-y der Buttons/Panels)ansetzen? Wenn man in der Breite und in der Tiefe mehr Ebenen hat, dürfen ja die Buttons oder Panels, wo ich die Namen und Positionen eintragen will, nicht miteinander kollidieren. Hat da jemand schon mal was von Euch gemacht oder eine Idee? Ich stelle hier auch gern mal mein Testprojekt ein, wenn erwünscht. |
Re: Strukturelles Diagramm aus einem TTreeview erzeugen - WI
Liste der Anhänge anzeigen (Anzahl: 1)
Damit das hier nicht so aussieht, als würde ich fertigen Code erwarten, zeig ich Euch mal, was ich bisher habe.
Ich bin eigentlich schon "FAST" zufrieden. Nur würde ich eben gern die Unterstrukturen jeweils über dem "Elternelement" zentrieren, wie auch das RootElement. Das müsste eigentlich mit einfacher Logik gehen, nur bin ich da nicht ganz so helle. :shock: Hier der Code und ein ScreenShot:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AdvSmoothButton, StdCtrls, ComCtrls; type TForm1 = class(TForm) tree: TTreeView; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var myButton : TButton; i, int_Top_offset, main_Left, int_Left_offset : integer; begin tree.FullExpand; int_Top_offset := 30; int_Left_offset := 20; main_Left := 0; for i := 0 to tree.Items.Count-1 do begin myButton := TButton.Create(self); myButton.Parent := Form1; myButton.Top := (tree.Items.Item[i].Level * 45) + int_Top_offset; myButton.Height := 30; inc(main_Left); myButton.Left := (main_Left * 75) + int_Left_offset; myButton.Caption := tree.Items.Item[i].Text; myButton.Visible := true; end; form1.Repaint; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz