Einzelnen Beitrag anzeigen

Gyrospeter

Registriert seit: 11. Apr 2019
49 Beiträge
 
Delphi 10.4 Sydney
 
#1

cxVirtualTreeList -> cxMemo

  Alt 18. Jun 2020, 08:14
Guten Morgen werte Delphianer,

ich stehe mal wieder auf dem Schlauch und vor einem Problem. Vielleicht kennen ja einige von euch das XML Notepad von Microsoft, dort ist es so, dass wenn ich auf einen Node klicke, dann wird er mir rechts auf das Memofeld in DERSELBEN Zeile übertragen. Bei mir ist es momentan eher Wirrwar und erscheint oben im Memofeld. Wie gesagt möchte ich es derselben Zeile. Vielleicht soll er dann rechts auch automatisch mitscrollen, wenn ich links viel weiter unten ein Node angeklickt habe und drüber eine Menge Nodes sind.
Gibt's eventuell eine eleganter Lösung, als die das im Notepad gemacht haben? Dort wird Links jeder Node inkl. Attributen einzeln aufgedröselt?!

Vielen Dank schon mal vorab

Code:
procedure TXMLToMemo.SetTransferSelectedNodes(AVT: TcxVirtualTreeList;
  AMemo: TcxMemo);
var
  ParentNode,ChildNode: TcxTreeListNode;
  i: Integer;
begin
  AMemo.Clear;
  ParentNode := AVT.Selections[0];
  //AVT.CopySelectedToClipboard(True);

  while ParentNode <> nil do
  begin
    if ParentNode <> nil then
    begin

      AMemo.Lines.Add(ParentNode.Texts[0]);
      ChildNode := ParentNode.GetFirstChild;

      {for i := 0 to AVT.SelectionCount - 1 do
        begin
          if not ParentNode.Expanded or ParentNode.Selected then
            AMemo.Lines.Add('');
        end;} // Funktioniert nicht so

      while ChildNode <> nil do
      begin
        AMemo.Lines.Add(ChildNode.Texts[0]);

        {for i := 0 to AVT.SelectionCount - 1 do
        begin
          if not ChildNode.Expanded or ChildNode.Selected then
            AMemo.Lines.Add('');
        end;} // Funktioniert nicht so

        if ChildNode.HasChildren then
        begin
          ParentNode := ChildNode.GetFirstChild;
          break;
        end;
        ChildNode := ChildNode.GetNextSibling;
      end;
    end;

    if ChildNode = nil then
    begin
      if ParentNode.GetNextSibling <> nil then
        ParentNode := ParentNode.GetNextSibling
      else
      begin
        while ParentNode.GetNextSibling = nil do
        begin
          if ParentNode.Parent <> nil then
            ParentNode := ParentNode.Parent
          else
            break;
        end;
        if ParentNode <> nil then
          ParentNode := ParentNode.GetNextSibling;
      end;
    end;
  end;
end;
  Mit Zitat antworten Zitat