6

FMX.TreeView.TTreeViewオンラインドキュメント、またはDelphi XE2に含まれているデモで、実行時にコントロールにノードを追加するためのサンプルが見つかりません。では、実行時にFireMonkey TreeViewのノードを追加、削除、およびトラバースするにはどうすればよいですか?

4

3 に答える 3

15

私たちはこの時点で私たち全員が学んでいると思います...

しかし、私が見たところ、TTreeViewは、どのコントロールも別のコントロールを親にできるという原則を使用しています。

Parentアイテムを子として表示するようにプロパティを設定するだけです。

var
  Item1 : TTreeViewItem;
  Item2 : TTreeViewItem;
begin
  Item1 := TTreeViewItem.Create(Self);
  Item1.Text := 'My First Node';
  Item1.Parent := TreeView1;

  Item2 := TTreeViewItem.Create(Self);
  Item2.Text := 'My Child Node';
  Item2.Parent := Item1;
end;

このため、TreeViewにコントロールを配置するなど、これまで不可能だったことができます。たとえば、このコードはItem2が使用する領域にボタンを追加し、Item2が表示されるまでボタンは表示されません。

  Button := TButton.Create(self);
  Button.Text := 'A Button';
  Button.Position.X := 100;
  Button.Parent := Item2;
于 2011-09-21T23:45:20.263 に答える
2

AddObject(FmxObject)を使用すると、任意のオブジェクト(ボタンなど)を追加することもできます...

于 2019-01-22T06:55:39.080 に答える
0

別の考えがあります。最初の答えは私がそれを得るのを助けました。したがって、次のコードを追加します

Var
TempItem:TTreeViewItem;
Begin
TempItem := TTreeViewItem.Create(Self);
TempItem.Text := 'Enter Caption Here';
TempItem.Parent := TreeView;  
End

不要なメモリを使用しないようにアイテムを解放する必要がある場合、実際のトリックが発生します。それで、私がここでしたように、あなたがそれをループで使うとしましょう:

ADOTable.Connection := ADOConnection;
  ADOTable.TableName := 'MenuTree';

  ADOTable.Open;
  ADOTable.First;

  ADOTable.Filter := '(CHFlag=''CURRENT'') AND (Parent=''Tree'')';
  ADOTable.Filtered := True;

  While NOT ADOTable.Eof Do
    Begin
      TempItem := TTreeViewItem.Create(Self);
      TempItem.Text := ADOTable['ItemName'];
      TempItem.Parent := TreeView;
      // TempItem.Free;

      ADOTable.Next;
    End;
  TempItem.Free;
  ADOTable.Close;
于 2012-06-06T22:35:01.030 に答える