6

TTreeNodeにはVisibleプロパティがないため、明らかなオプションは存在しません。TTreeNodeとそのすべての子ノードを非表示にする他の方法はありますか?もちろん、後でまた見えるようにしたいと思います。

これはDelphi2007の場合です。

注#1:私は代替のTVirtualTreeViewを知っていますが、TTreeViewでこれを実現する簡単な方法がないかどうかを確認します。

注#2:トップレベルノードにのみオプションが必要です。私が隠したいものは通常子供さえいません。

4

6 に答える 6

7

ユーザー インターフェイスからデータを分離することは良い考えです。ツリー ビューに関するこの問題は良い例です。ツリー ビューにデータを保存しないでください。データを格納する構造化クラスを含む非ビジュアル ユニットがよくあります。ユーザー インターフェイス ユニットは、そのクラスのデータ (構成可能なサブセット) を表示できるツリービューを持つことができます。2 つの間でデータを移動するには、さまざまな方法があります。このタイプの分離には多少の計画が必要ですが、柔軟性と安定性が大幅に向上します。

于 2009-05-07T02:29:39.377 に答える
5

より優れたツリーコンポーネントを使用したい場合は、Virtualtreeviewを使用してみませんか。これはDelphi用にこれまでに開発された最高のコンポーネントの1つであり、ソースで無料で使用できます。しかし、ttreenodeを非表示にすることには論理的な問題があるかもしれません!ノードが表示されていない場合、ツリーに+記号を表示する必要がありますか?

http://wiki.lazarus.freepascal.org/VirtualTreeview

于 2009-05-06T07:04:10.347 に答える
4

TTreeView でノードを「非表示」にする唯一の方法は、実際にノードを削除することです。次に、ノードを「表示」するには、ノードを再度挿入するだけです。

于 2009-06-01T20:06:11.397 に答える
4

TTreeView は標準の Windows ツリー ビューのラッパーであり、( MSDN のドキュメントから判断すると) ツリー ノードを非表示にすることはできません。ツリー ビューは多数のノードにスケーリングしないことが知られているため、必要のないものをすべて削除するのではなく、ツリー ノードを非表示にすることはお勧めできません。

最上位ノード (非表示にするノード) のみを削除して挿入し、再追加されたノードのOnExpandingイベントですべての子ノードを作成すると、作業が少し楽になります。そのためには、ノードのHasChildrenプロパティを true に設定するだけです。

于 2009-05-06T06:58:51.217 に答える