2016-07-28 6 views
3

은 현재 내가 보이지 않는 상태에서 노드를 추가 할 VST아무 것도 추가하지 않는 방법 Virtualstringtree에 Node?

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 인 경우, 가시 상태의 노드를 추가하십시오. false 인 경우 노드를 보이지 않는 상태로 추가합니다. 어떻게 할 수 있습니까?

+3

노드 생성 직후에 AVST.IsVisible [Result] : = AObject.Visible;을 설정하지 못하게하는 것은 무엇입니까? 사용자는 노드를 생성 할 때'(Begin/End) Update' 쌍 안에 있기 때문에 추가 된 노드를 보지 않을 것입니다. –

+0

@RemyLebeau 와우, 나는 정말로 내가 어리 석거나 정신적으로 지체되었다고 생각하기 쉽다. 매우 고맙습니다. 매우 간단했습니다. –

답변

5

만하면 노드를 만들 직후 노드의 IsVisible 속성을 설정 :

사용자는 추가 수행하지 않도록, 노드가 AddVSTStructure() 이후 (Begin/End)Update 쌍의 내부에서 호출되는 추가 참조하지 않을
Result := AVST.AddChild(ANode); 
AVST.IsVisible[Result] := AObject.Visible; // <-- add this 

화면상의 모든 업데이트.