도킹 패널에서 TTreeView를 사용하는 delphi 2009 앱을 작성 중입니다.델파이의 TTreeNode 서브 클래스 화 문제
TTreeNode를 서브 클래 싱하면 앱에서 큰 단순화를 만들 수 있음을 알았습니다. 트리보기는 도킹 패널에 배치됩니다.
TInfoTreeNode=class(TTreeNode)
private
// remember some stuff
public
end;
procedure TfraInfoTree.tvInfoCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass:=TInfoTreeNode;
end;
나는 벽에 부딪쳤다 고 생각한다. 각 "TInfoTreeNode"인스턴스는 그 자체에 대한 것들을 기억해야한다. TTreeView가 포함 된 패널이 자동 숨김 상태가되면 핸들이 해제되므로 클래스가 삭제됩니다.
문제가있는 것은 클래스가 알고 있던 모든 것을 잊어 버리기 때문입니다.
(데이터베이스에서 모든 TInfoTreeNode를 다시 다시로드하는 것 외에는 다른 방법이 있습니까?)
감사합니다.
그 클래스가 더'Tag' 속성이 없습니다 :
내가 할 필요는 트리에 노드를 추가 할 수 있습니다. 어쩌면 당신은'Data' 속성을 대신 생각할 것입니다. –아, 그렇습니다. 델파이 물건을 몇 마디한지 꽤 오랜만입니다. 내 기억이 완전히 실패 할 가능성이 아주 큽니다! – Bevan
+1, 좋은 답변입니다. IMO는 데이터 구조가 다른 곳에서 분명히 존재해야하며, 트리는 객체 소유권을 명확하게하고 데이터를 프리젠 테이션에서 적절하게 분리하기 위해 트리를 참조 만해야합니다 (포인터 또는 핸들을 통해 목록 인덱스를 사용하는지 여부는 중요하지 않음). – mghie