TVirtualTreeView - который Сергей Смирнов выкладывал на этом сайте
для работы с XML использую стандатрные модули DOM, XMLRead.
Чтобы не дублировать информацию из XML-фала создал такой тип записи для ВиртуалТри:
- Код: Выделить всё
PMyRec=^TMyRec;
TMyRec=record
f1:PWideString;
f2:PWideString;
f3:PWideString;
end;
в процедуре создания формы пишу:
- Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
var
newvn:PVirtualNode;
data:PMyRec;
nod:TDOMNode;
begin
VirtualStringTree1.NodeDataSize := SizeOf(TMyRec);
doc:=TXMLDocument.Create;
readxmlfile(doc,'test.xml');
newvn:=VirtualStringTree1.AddChild(nil);
data:=virtualstringtree1.GetNodeData(newvn);
nod:=doc.DocumentElement.ChildNodes.Item[0];
if assigned(data) then
begin
data^.f1:=pointer(doc.DocumentElement.ChildNodes.Item[0].TextContent);
data^.f2:=pointer(doc.DocumentElement.ChildNodes.Item[1].TextContent);
data^.f3:=pointer(doc.DocumentElement.ChildNodes.Item[2].TextContent);
end;
end;
далее хочу вывести имя созданого виртуалнода в процедуре GetText:
- Код: Выделить всё
procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
Data: PMyRec;
begin
Data := Sender.GetNodeData(Node);
if Assigned(Data) then
CellText := widestring(data^.f1^);
end;
в итоге невнятно ругаеться при компиляции, что я не так пишу?