TTreeNodeにはVisibleプロパティがないため、明らかなオプションは存在しません。TTreeNodeとそのすべての子ノードを非表示にする他の方法はありますか?もちろん、後でまた見えるようにしたいと思います。
これはDelphi2007の場合です。
注#1:私は代替のTVirtualTreeViewを知っていますが、TTreeViewでこれを実現する簡単な方法がないかどうかを確認します。
注#2:トップレベルノードにのみオプションが必要です。私が隠したいものは通常子供さえいません。
TTreeNodeにはVisibleプロパティがないため、明らかなオプションは存在しません。TTreeNodeとそのすべての子ノードを非表示にする他の方法はありますか?もちろん、後でまた見えるようにしたいと思います。
これはDelphi2007の場合です。
注#1:私は代替のTVirtualTreeViewを知っていますが、TTreeViewでこれを実現する簡単な方法がないかどうかを確認します。
注#2:トップレベルノードにのみオプションが必要です。私が隠したいものは通常子供さえいません。
ユーザー インターフェイスからデータを分離することは良い考えです。ツリー ビューに関するこの問題は良い例です。ツリー ビューにデータを保存しないでください。データを格納する構造化クラスを含む非ビジュアル ユニットがよくあります。ユーザー インターフェイス ユニットは、そのクラスのデータ (構成可能なサブセット) を表示できるツリービューを持つことができます。2 つの間でデータを移動するには、さまざまな方法があります。このタイプの分離には多少の計画が必要ですが、柔軟性と安定性が大幅に向上します。
より優れたツリーコンポーネントを使用したい場合は、Virtualtreeviewを使用してみませんか。これはDelphi用にこれまでに開発された最高のコンポーネントの1つであり、ソースで無料で使用できます。しかし、ttreenodeを非表示にすることには論理的な問題があるかもしれません!ノードが表示されていない場合、ツリーに+記号を表示する必要がありますか?
TTreeView でノードを「非表示」にする唯一の方法は、実際にノードを削除することです。次に、ノードを「表示」するには、ノードを再度挿入するだけです。
TTreeView は標準の Windows ツリー ビューのラッパーであり、( MSDN のドキュメントから判断すると) ツリー ノードを非表示にすることはできません。ツリー ビューは多数のノードにスケーリングしないことが知られているため、必要のないものをすべて削除するのではなく、ツリー ノードを非表示にすることはお勧めできません。
最上位ノード (非表示にするノード) のみを削除して挿入し、再追加されたノードのOnExpandingイベントですべての子ノードを作成すると、作業が少し楽になります。そのためには、ノードのHasChildrenプロパティを true に設定するだけです。