Announcement

Collapse
No announcement yet.

Macht man das mit Treeview?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Macht man das mit Treeview?

    Hallo, Leute,<p>
    dies ist mein erstes Posting hier. Ich benutzt Delphi erst seit ca. 5 Tagen, bin als langjähriger Web-Programmierer aber restlos begeistert. Endlich mal Desktop-Anwendungen programmieren, die auch Tempo machen.
    So, nun zu meiner Frage.<p>
    Ich möchte für mich selbst einen kleinen elektronischen Zettelkasten programmieren.
    Da ich absolut nicht weiß, wie ich meine Aufgabenstellung beschreiben soll, liefere ich mal ein Screeenshot der Anwendung, die ich bisher dafür benutzte. Ich will halt "nur" was identisches Programmieren.<p>
    Mein Problem ist, dass ich noch überhaupt nicht weiß, wie ich die "linke Seite", also die Baumstruktur programmieren soll.
    Den Screnshot findet ihr hier:<p>
    http://www.juergen-schulze.de/pics/screenshot.gif<p>
    Nach Möglichkeit sollte natürlich die Baumstruktur mit dem Kontextmenü erweitert werden (Neue Kategorie anlegen, Neuen Eintrag anlegen, Umbenennen, Löschen)<p>
    Für kleine Hinweise wäre ich SEHR dankbar.<p>
    Gruß
    Jürgen

  • #2
    Hallo!<br>
    Also....<br>
    Auf der Datenbankseite brauchst Du eine Tabelle, die "auf sich selbst" referenziert:<br>
    ID_MeineMemos integer : eindeutiger Schlüssel<br>
    MeineMemos_ID_Vater integer : Verweis auf den Vaterknoten<br>
    Text char(50) : Memotext<br>
    So baue ich meine Tabellen immer auf.<br>
    Mit dieser Datenstruktur haben wir jetzt eine Hierarchie, wie Sie dem Beispiel aus dem Screenshot entspricht. (Ja die Tabellenstruktur muß noch erweitert und angepaßt werden)<br>
    <br>
    Darstellung im Formular:<br>
    Wir verwenden die fertigen Komponenten von developer express (www.devexpress.com) Die kosten aber Geld... Es gibt etliche FreeWare Komponenten in diesem Bereich. Such mal nach DBTreeView (auch hier im Forum). Ich habe mir mal einiges angesehen, bin aber überzeugter devexpress Anwender.<br>
    BYE BERN

    Comment


    • #3
      Als Treeview würde ich die VirtualTreeView verwenden ( siehe http://www.delphi-gems.com/ ).

      Damit kann man sehr einfach neue "Nodes" erstellen, diesen unterschiedliche Bitmaps, Farben, Schrift, ... zuweisen.
      Die TreeView verwaltet die Daten in Records, so daß die Speicherung in einer Datenbank extrem einfach ist. Die Anzeige der Daten erfolgt aus diesem Record und ist extrem flexibel.

      Unter
      http://www.delphi-Treff.de/content/tutorials/vstkurs/
      ist ein Tutorial über die grundlegenden Funktionen zu finden

      Comment


      • #4
        Anbei ein paar Codezeilen :

        // Deklarieren Nodedaten
        PNotiz = ^TNotiz;
        TNotiz = record
        iIdent : Integer;
        sText : String;
        end;

        // einlesen der Daten
        var
        fData : PNotiz;
        fNode : PVirtualNode;
        fParent : PVirtualNode;
        begin

        Daten.Open;
        // erster Node ist "RootNode"
        // Subnodes werden mit AddChild( ParentNode ) erstellt
        //
        fParent := nil;
        While daten.eof = false do
        begin
        fNode := VirtualTree.AddChild( fParent );
        fData := VirtualTree.GetNodeData( fNode );
        fData.iIdent := Daten.FieldByName('IDENT').AsInteger;
        fData.sText := Daten.FieldByName('TEXT').AsString;
        if Daten.FieldByName('MasterNode') = .....
        fParent := fNode;
        // für SubNodes entsprechende abfragen
        Daten.Next;
        fNode := VirtualTree.GetNext( fNode );
        end;

        // einstellen der Nodegröße
        procedure OnGetNodeDataSize ...
        begin
        NodedataSize := SizeOF( TNotiz );
        end;

        // anzeigen des Textes
        procedure OnGetText...
        var fData : PNotiz;
        begin
        fData := VirtualTree.GetNodeData( Node );
        CellText := fData.sText;
        // ....
        end

        Comment


        • #5
          Hallo Juergen

          Schick mir mal ne E-Mail - vielleicht sind 5 Tage Delphi ein Anlass, einen Ansprechpartner zu haben

          Gruß,Bernhar

          Comment

          Working...
          X