Delphi Prism: замена функции TreeView AddchildObject - PullRequest
0 голосов
/ 01 сентября 2011

Я нахожусь в процессе миграции программного обеспечения для win32 на .NET и в настоящее время работаю с элементом управления TreeView в Delphi Prism. Пока что я могу добавить родительские узлы и дочерние узлы в TreeView. Тем не менее, я хотел бы знать, есть ли замена для функции AddchildObject для Delphi Prism TreeView. Если нет, как бы вы это сделали?

Кажется, в Интернете очень мало информации об этом.

1 Ответ

1 голос
/ 01 сентября 2011

Я полагаю, что коллеги-программисты не могут ответить на этот вопрос, и я считаю, что это важный вопрос для любого программиста, работающего с Delphi Prism. Поэтому я решил ответить на вопрос сам, а не удалять его, поскольку нашел ответ на него в другом вопросе StackOverflow. Тем не менее, мой вопрос и их вопрос разные, но требуют одинакового ответа.

Я написал простой и быстрый пример с призмой delphi, чтобы показать, как использовать древовидную структуру и иметь возможность хранить и извлекать объекты в узле древовидной структуры.

Вот мой пример Treeview

namespace TreeViewExample;

interface

uses
  System.Drawing,
  System.Collections,
  System.Collections.Generic,
  System.Windows.Forms,
  System.ComponentModel;

type
  /// <summary>
  /// Summary description for MainForm.
  /// </summary>
  MainForm = partial class(System.Windows.Forms.Form)
  private
    method MainForm_Load(sender: System.Object; e: System.EventArgs);
    method treeView1_Click(sender: System.Object; e: System.EventArgs);
  protected
    method Dispose(disposing: Boolean); override;
  public
    constructor;
  end;

  theclass = class
  thestr:String;
  public
  constructor;
  end;

implementation

{$REGION Construction and Disposition}
constructor MainForm;
begin
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent();

  //
  // TODO: Add any constructor code after InitializeComponent call
  //
end;

method MainForm.Dispose(disposing: Boolean);
begin
  if disposing then begin
    if assigned(components) then
      components.Dispose();

    //
    // TODO: Add custom disposition code here
    //
  end;
  inherited Dispose(disposing);
end;
{$ENDREGION}

constructor theclass;
begin
  thestr:='Testing Treeview.';
end;

method MainForm.MainForm_Load(sender: System.Object; e: System.EventArgs);
var topnode:treenode;
    theObject:theclass;
begin
  theObject:=new theclass;
  treeview1.BeginUpdate;
  topnode:=treeview1.Nodes.Add('node1');
  topnode.Nodes.Add('no data node');
  topnode.Nodes.Add('data node').Tag := theObject;
  topnode.Expand;
  treeview1.EndUpdate;
end;

method MainForm.treeView1_Click(sender: System.Object; e: System.EventArgs);
begin
  if treeview1.SelectedNode.Text='data node' then
    MessageBox.Show(theClass(Treeview1.SelectedNode.Tag).thestr);
end;

end.

Вот ссылка на вопрос.

сохранение текстовых полей в массив (и извлечение данных из массива) при использовании дерева в c #

...