2011-01-11 15 views
1

私はこれらの2つの事柄を理解しようとしています。Delphi VirtualStringTree Draw

1)コード内の行全体の色を変更するにはどうすればよいですか?同様に、VTがListViewのように見えるときは?

2)どのようにしてチェックボックスを字下げすることもできますか?私の子供のチェックボックスと同じ "インデント?"私のルートチェックボックスとして。

ありがとうございます!

+6

へようこそSO! 2つの質問は、SOに関する2つの質問に対応する必要があります。あなたの質問の1つに誰かが答えを知っていたらどうなりますか?それはあなたの組み合わせた質問に対する答えとなりますか? – jpfollenius

+0

1)そして、行全体を選択するか、各行の背景を変更しますか? –

+1

あなたは16歳のコンピュータウィズ*(ic)になるかもしれませんが、本当に、ここであなたの本当のアカウントを使用してください。 –

答えて

0

1)toFullRowSelectTreeOptions.SelectionOptionsに追加してください。

2)私はそれに答えることはできません。 おそらく toFixedIndentを試してください。

+0

2)いいえ、toFixedIndentはすべてのノードを同じ位置にインデントします –

+0

@daemon_x:ありがとう、私はそれを修正しました。私はちょうど推測していた。 – jpfollenius

2

1)

procedure VSTBeforeItemErase(
    Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; 
    ItemRect: TRect; var ItemColor: TColor; 
    var EraseAction: TItemEraseAction); 
begin 
    EraseAction := eaColor; 
    ItemColor := clLime; 
end; 

2)各ノードのチェックボックスの設定インデントは別々私見不可能です。 ツリーには、すべてのノード(チェックボックスを含む)のインデントを設定するIndentプロパティがあります。 AdjustCoordinatesByIndentメソッドとPaintCheckImageメソッドが内部的に呼び出されますが、どちらも非表示になっています。そのうちの1つを変更すると助けになるかもしれませんが、あなたは非常に具体的である必要があります。自分のコンポーネントの子孫を作成するのが最善であると言います。

詳細な例のプロパティページに何かを作成する場合は、ツリー階層の複数のレベルにノードを追加する必要があります。あなたのインスピレーションのために

...

var CurrentNode: PVirtualNode; 
    CurrentSubnode: PVirtualNode; 

begin 
    VirtualStringTree1.Indent := 50; // this increases indention for all nodes in the tree 

    CurrentNode := VirtualStringTree1.AddChild(nil); // create a node to the root 
    CurrentNode.CheckType := ctCheckBox; // check support of a node 
    CurrentSubnode := VirtualStringTree1.AddChild(CurrentNode); // create a subnode to your first node 
    CurrentSubnode.CheckType := ctCheckBox; // check support of a node 
end;