Announcement

Collapse
No announcement yet.

VirtualTreeView editierbar machen

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

  • VirtualTreeView editierbar machen

    Hallo,

    weiss jemand wie man den VirtualTreeView von Mike Lischke für den Anwender editierbar macht?
    Sprich, die caption von bestehenden Knoten sollen geändert werden können und neue Knoten sollen vom anwender Erstellt werden können!
    Codebeispiele wären super!!!

    gruß

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    soweit habe ich es hinbekommen:

    <pre>
    //Bevor man Nodes überhaupt editieren kann, muss der
    //Eigenschaft TreeOptions.MiscOptions der Wert toEditable
    //hinzugefügt werden. Wird diese Eigenschaft nicht gesetzt,
    //ist ein editieren über den Benutzer unmöglich.
    procedure TFormMain.TreeViewBaumEditing(Sender: TBaseVirtualTree;
    Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean);
    begin
    //Wird gbraucht, damit der Baum editiert werden kann

    Allowed := true;
    end;

    //Hier wird der neue Text zu gewiesen
    procedure TFormMain.TreeViewBaumNewText(Sender: TBaseVirtualTree;
    Node: PVirtualNode; Column: TColumnIndex; NewText: WideString);
    var
    Data: PTreeData;
    begin
    Data:=Sender.GetNodeData(Node);
    if Assigned(Data)
    then Data.FCaption:=NewText;
    end;

    </Pre>

    aber das starten es editiermodus ist sehr schwierig.
    man muss mit der maus an die ricxhtige stelle doppelklicken. geht es nicht besser
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

    Comment


    • #3
      Hallo Markus,

      ich benutze zwar nicht das VirtualTreeView, habe aber mit dem normalen TTreeView per rechter Maustaste so etwas realisiert:

      procedure TForm1.Zweighinzufgen1Click(Sender: TObject);
      var
      TreeNode :TTreeNode;
      Area :TRect;
      NodeTitle :TEdit;
      begin
      if m_logic.Items.Count > 0 then
      begin
      TreeNode := m_logic.Items.AddChild(m_logic.Selected, Emptystr);
      m_logic.Selected.Expand(FALSE);
      end
      else
      TreeNode := m_logic.Items.Add(nil, Emptystr);
      m_logic.Select(TreeNode, []);
      Area := TReeNode.DisplayRect(TRUE);
      NodeTitle.Top := m_logic.ClientToScreen(Area.TopLeft).Y;
      NodeTitle.Left := m_logic.ClientToScreen(Area.TopLeft).X;
      NodeTitle.Top := Area.Top;
      NodeTitle.Left := Area.Left;
      NodeTitle.Parent := m_logic;
      NodeTitle.Visible := TRUE;
      NodeTitle.SetFocus;
      end;

      Wobei m_Logic das TreeView ist und bei Auführen des Popup-Menüs ein Zweig hinzugefügt wird und ein TEdit erzeugt wird, in dem man dann etwas eingeben kann (mit dem normalen Feld für die Caption hat es nicht geklappt). Das TEdit muss dann später wieder zerstört werden.

      Vielleicht hilfts ja...

      Grüße

      Juli

      Comment


      • #4
        Hallo Julia,

        Vielen Dank für deinen Code.
        Der VirtualTreeView funzt etwas anders, aber vielleicht kann ich ja trotzdem damit was anfangen.

        Danke!

        Gruß

        Marku
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          mit taste F2 kann man den editiermodus aktivieren
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hallo Julia,

            das geht einfacher:
            procedure TForm1.ZweighinzufgenClick(Sender: TObject);
            var aNode : TTreeNode;
            begin
            aNode := TreeView1.Items.AddChild(TreeView1.Selected,'');
            TreeView1.Selected := aNode;
            TreeView1.Selected.EditText;
            end

            Comment


            • #7
              Arrgh,
              hätte ich wissen müssen! Das hat die Hilfe glatt unterschlagen. Wieso ist das nicht zu finden?!
              Danke für den Tip.
              Grüße

              Juli

              Comment


              • #8
                Hallo,

                "Wieso ist das nicht zu finden?!"

                Delphi-Hilfe > TTreeNode >> Methoden

                Da sind noch mehr interresante Sachen zu finden.

                MfG Lanne

                Comment


                • #9
                  Hmm,

                  in meiner Hilfe (Delphi 7) ist dieser Eintrag nicht drin. EndEdit ist da, aber EditText haben sie unterschlagen.
                  Ich habe mir ja auch einen Wolf gesucht, bis ich das ganze dann mit meinene eigenen Editboxen umgangen habe. Also doch immer nochmal die Codevervollständigung prüfen...

                  Grüße

                  Juli

                  Comment


                  • #10
                    für alle die es interessiert, in der pdf-doku habe ich es gefunden. musste aber etwas rum probieren:

                    <pre>
                    procedure TFormMain.Editieren1Click(Sender: TObject);
                    var
                    Node: PVirtualNode;
                    begin
                    Node := TreeViewBaum.FocusedNode;
                    TreeViewBaum.EditNode(Node,-1);
                    end;
                    </pre>

                    -1 bedeutet, dass es keine spalten gibt!

                    gruß

                    Marku
                    Herzliche Grüße

                    Markus Lemcke
                    barrierefreies Webdesign

                    Comment

                    Working...
                    X