Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Datenbank in VirtualTreeView anzeigen und auswerten

  Alt 3. Mär 2009, 20:45
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...
Miniaturansicht angehängter Grafiken
fehler_188.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat