AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi VirtualStringTree und Query
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree und Query

Ein Thema von marcus · begonnen am 14. Sep 2004 · letzter Beitrag vom 16. Sep 2004
 
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#4

Re: VirtualStringTree und Query

  Alt 14. Sep 2004, 19:57
Ich habe das so gelöst:

Code:
procedure TForm17.TreeView1Change(Sender: TObject; Node: TTreeNode); //Ich habe eine Treeview, wenn ich da was ändere, werden die Daten, entsprechend der Query geändert
var
  TreeObject : TTreeDataClass;
  Wurzel    : PVirtualNode;
  i         : Integer;
Begin
VST1.Header.Columns.Clear;

//---------------- Mandanten ---------------------------------------------------

  If Treeview1.Selected.Text = 'Mandanten' then
    Begin
    LB1.Enabled:= true;
    VST1.TreeOptions.PaintOptions:= VST1.TreeOptions.PaintOptions + [toShowTreeLines];
      With Form1.QSeaMand Do
        Begin
          close;
          SQL.Clear;
          SQL.Text:= 'Select Mand.*, DMand.DMIDRSV, '
                    +'DMand.DMIDHPF, DMand.DMRSV, DMand.DMHPF '
                    +'From "'+DBPath+DBDMandName+'" DMand '
                    +'LEFT JOIN "'+DBPath+DBMandName+'" Mand '
                    +'ON (Mand.MID = DMand.DMID) '
                    +'WHERE (DMand.DAAkz = "'+SAKz.Text+'")'; //hier die SQL-Abfrage
          Open;

        For i:= 0 To 9 Do //Hier füge ich die Spalten ein
          VST1.Header.Columns.Add;
        With VST1.Header DO
          Begin
            Columns[0].Text:= 'Vorname'; Columns[0].Width:= 100;
            Columns[1].Text:= 'Name'; Columns[1].Width:= 100;
            Columns[2].Text:= 'Firma'; Columns[2].Width:= 100;
            Columns[3].Text:= 'Strasse'; Columns[3].Width:= 100;
            Columns[4].Text:= 'Wohnhaft'; Columns[4].Width:= 100;
            Columns[5].Text:= 'PLZ'; Columns[5].Width:= 50;
            Columns[6].Text:= 'Ort'; Columns[6].Width:= 100;
            Columns[7].Text:= 'Briefanrede'; Columns[7].Width:= 100;
            Columns[8].Text:= 'Schadensnummer'; Columns[8].Width:= 100;
            Columns[9].Text:= 'VersNr'; Columns[9].Width:= 100; //Breite und Spaltennamen werden zugewiesen
          end; //With VST.Header
            VST1.BeginUpdate;
            VST1.NodeDataSize:= SizeOf(TTreeData);
            VST1.DeleteChildren(VST1.RootNode, True);

        //------------Create Node's---------------------------------------------

          While Not EOF DO
            Begin
              TreeObject:= TTreeDataClass.Create;
              TreeObject.Vorname:= FieldByName('MVorname').AsString;
              TreeObject.Name:= FieldByName('MName').AsString;
              TreeObject.Firma:= FieldByName('MFirma').AsString;
              TreeObject.Strasse:= FieldByName('MStrasse').AsString;
              TreeObject.WohnBei:= FieldByName('MWohnBei').AsString;
              TreeObject.PLZ:= FieldByName('MPLZ').AsString;
              TreeObject.Ort:= FieldByName('MOrt').AsString;
              TreeObject.BAnrede:= FieldByName('MBriefAnrede').AsString;
              Wurzel:= AddVSTObject(VST1, nil,TreeObject); //Die Node aus der SQL-Abfrage werden eingefügt

        //------------Create Root's---------------------------------------------
              if FieldByName('MNameGF1').AsString > '' Then
                Begin
                  TreeObject:= TTreeDataClass.Create;
                  TreeObject.VornameGF1:= FieldByName('MVornameGF1').AsString;
                  TreeObject.NameGF1:= FieldByName('MNameGF1').AsString;
                  TreeObject.StrasseGF1:= FieldByName('MStrasseGF1').AsString;
                  TreeObject.PLZGF1:= FieldByName('MPLZGF1').AsString;
                  TreeObject.Ort:= FieldByName('MOrtGF1').AsString;
                  TreeObject.BAnredeGF1:= FieldByName('MBriefAnredeGF1').AsString;
                  TreeObject.Icon:= 31;
                  AddVSTObject(VST1, Wurzel, TreeObject); //die Root's werden den passenden Node's zugewiesen
                end; // IF MNameGF1 > ''
Code:
Function ADDVSTObject(aVST: TCustomVirtualStringTree; aNode: PVirtualNode;
                      aObject: TObject): PVirtualNode;
var
  Data: PTreeData;
Begin
  Result:= aVST.AddChild(aNode);
  aVST.ValidateNode(Result, False);
  Data:= aVST.GetNodeData(Result);
  Data^.FObject:= aObject;
end;
Die Procedure für die Abfrage kannst Du im Programm an irgend einer Stelle aufrufen. Die Hauptsache ist, dass die Zuweisung in der Procedure GetText richtig sind. In der Procedure werden den Spalten der jeweilige Inhalt aus der Abfrage zugewiesen.

Des Weiteren habe ich die jeweiligen Felder noch seperat wie im dem o.g. Beispiel deklariert.

Ich hoffe es ist halbwegs verständlich.

Du kannst aber auch mal hier im Forum suchen, da gib es schon einiges zu dem Thema.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz