2016-07-28 2 views
3

は現在、私はVSTどのように追加するには可視のノードVirtualstringtree?

function AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; AObject: TDATArecord): PVirtualNode; 
var 
    Data: PUserData; 
begin 
    Result := AVST.AddChild(ANode); 
    Data := AVST.GetNodeData(Result); 
    AVST.ValidateNode(Result, false); 
    Data^.FObject := AObject; 
end; 

//adding node 
VDT1.BeginUpdate; 
try 
    DATArecord.name := 'nodename'; 
    DATArecord.Visible:= False; 
    AddVSTStructure(VDT1, nil, DATArecord); 
finally 
    VDT1.EndUpdate; 
end; 

にいくつかのノードを追加するには、このコードを持っている私は、私は完全に見えない意味し、非可視の状態でノードを追加します。

は私がVDT1.IsVisible[Node] := boolean;を使用して、それを追加した後、ノードの可視性を設定することができます知っているが、私はDatarecord.visibleをすれば、非可視私は

のでDATArecord.Visible:= False;に設定されている追加のレコードを考慮し、ツリーに表示する前にそれを設定したいですがtrueの場合は、可視状態のノードを追加します。その偽の場合は、非可視状態のノードを追加します。どうすればいいですか?

+3

ノードの作成直後に 'AVST.IsVisible [Result]:= AObject.Visible; 'を設定することを止めたいのは何ですか?ノードを作成した時点で '(Begin/End)Update'ペアの中にいるので、追加されたノードは表示されません。 –

+0

@RemyLebeauうわー、私は本当に馬鹿だと思っています。非常にありがとう、それはとてもシンプルでした –

答えて

5

は、単にあなたがノードを作成した直後に、ノードのIsVisibleプロパティを設定します。

Result := AVST.AddChild(ANode); 
AVST.IsVisible[Result] := AObject.Visible; // <-- add this 

ユーザーがAddVSTStructure()(Begin/End)Updateペア内で呼び出されているため、ノードを追加見に行くされていないので、追加は行われません。画面上の更新

関連する問題