Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Strukturelles Diagramm aus einem TTreeview erzeugen - WIE? (https://www.delphipraxis.net/129772-strukturelles-diagramm-aus-einem-ttreeview-erzeugen-wie.html)

torud 25. Feb 2009 10:37


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.

torud 25. Feb 2009 18:03

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 12:31 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