TVirtualStringTree (버전 5.2.2)가 있고 레코드 대신 노드 객체를 추가해야합니다.TVirtualStringTree - 레코드 대신 객체 추가
나는 이미 질문 : Delphi, VirtualStringTree - classes (objects) instead of records에 제공된 답변을 살펴 보았지만 작동하지 않습니다.
FObjLst.Add(lNode);
과 트리에 추가 :
var iPos: Integer;
lNode: PVirtualNode;
ldata: TNodeElem;
begin
FTreeView.BeginUpdate;
for iPos := 0 to FObjLst.Count -1 do
begin
lNode := FTreeView.AddChild(nil);
lData := TNodeElem(FObjLst[iPos]);
FTreeView.getNodeData(lNode)^ := lData;//E2015 Operator not aplicable to this operand type
FTreeView.ValidateNode(lNode,False);
end;
FTreeView.EndUpdate;
end;
procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: UnicodeString);
var
Data: TNodeElem;
begin
Data := FTreeView.GetNodeData(Node);
CellText := Data.LogMessage;
end;
TNodeElem = class
public
LineTimeS, LogMessage, MethName: String;
LineDate,LineTime: TDateTime;
LineDateTime: TDateTime;
ElemType: TLogLineType;//ordinal type
....
end;
이 노드가 TObjectList와 추가됩니다처럼 트리의 노드에 추가 할
객체는 나는 E2015 Operator not aplicable to this operand type error을 얻는다. 그것은 내가 같은 객체 멤버 기록으로 추가 할 수 있습니다 알고 ... 아마 내가 여기에 누락 무엇을 매우 간단 뭔가
입니다 :
TNode = record
obj: TMyObject;
end;
하지만 난 이해 할 잘못하고있다.
V5.2.2는 최신 버전이 아닙니다. V6로 시작하기 TVirutalNode에는 타입 변환을 피하는 노드를 추가하거나 설정하기위한 일반적인 도우미 메소드가 있습니다. –
좋은 점 @ JoachimMarder. 나는 연약한 보석 웹 페이지에서만 잼을 보았다. 부드럽지 않다 ... – RBA