Das habe ich gemacht. Jetzt bring er mir den Fehler(siehe Bild im Anhang)
Um die Frage vorzubuegen, Ja die Datei befindet sich im Programmordner
Delphi-Quellcode:
type
PTZRec = ^TZRec;
TZRec = packed record
ID, LfdNr : integer;
Datum, Uhrzeit, Ereignis, Teilnehmer, Bereich : WideString;
end;
var
frmMain: TfrmMain;
implementation
uses fDetail;
{$R *.dfm}
procedure TfrmMain.Button2Click(Sender: TObject);
begin
LoadDataSecData;
end;
procedure TfrmMain.LoadDataSecData;
begin
if not ZQuery1.Active then
ZQuery1.Open;
ZQuery1.filtered := false;
ZQuery1.filter := '';
VirtualStringTree1.BeginUpdate;
VirtualStringTree1.Clear;
VirtualStringTree1.NodeDataSize := Sizeof(TZRec);
ZQuery1.First;
VirtualStringTree1.RootNodeCount := ZQuery1.RecordCount;
VirtualStringTree1.SortTree(0,sdAscending,true);
VirtualStringTree1.EndUpdate;
end;
procedure TfrmMain.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
TZRecord : PTZRec;
begin
TZRecord := Sender.GetNodeData(Node);
Initialize(TZRecord^);
TZRecord.ID := ZQuery1.FieldByName('ID').AsInteger;
TZRecord.LfdNr := ZQuery1.FieldByName('LfdNr').AsInteger;
TZRecord.Datum := ZQuery1.FieldByName('Datum').AsString;
TZRecord.Uhrzeit := ZQuery1.FieldByName('Uhrzeit').AsString;
TZRecord.Ereignis := ZQuery1.FieldByName('Ereignis').AsString;
TZRecord.Teilnehmer := ZQuery1.FieldByName('Teilnehmer').AsString;
TZRecord.Bereich := ZQuery1.FieldByName('Bereich').AsString;
if not ZQuery1.eof then
ZQuery1.Next;
end;
procedure TfrmMain.VirtualStringTree1FreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
TZData : PTZRec;
begin
TZData := Sender.GetNodeData(Node);
if Assigned(TZData) then
Finalize(TZData^);
end;
procedure TfrmMain.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
var
TZRecord : PTZRec;
begin
TZRecord := Sender.GetNodeData(Node);
case Column of
0: CellText:= IntToStr(TZRecord.ID);
1: CellText:= IntToStr(TZRecord.LfdNr);
2: CellText:= TZRecord.Datum;
3: CellText:= TZRecord.Uhrzeit;
4: CellText:= TZRecord.Ereignis;
5: CellText:= TZRecord.Teilnehmer;
6: CellText:= TZRecord.Bereich;
end;
end;
procedure TfrmMain.VirtualStringTree1HeaderClick(Sender: TVTHeader;
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if Button = mbLeft then
with Sender do
begin
if SortColumn <> Column then
SortColumn := Column;
if SortDirection = sdAscending then
SortDirection := sdDescending
else SortDirection := sdAscending;
VirtualStringTree1.SortTree(Column,SortDirection,true);
end;
end;
[EDIT] Wäre schon von Vorteil...