Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Firemonkey Treeview mit Daten aus ClientDataSet füllen

  Alt 23. Okt 2014, 01:25
Und so?
Delphi-Quellcode:
procedure TForm1.PresentDataset;
var
  LTreeDict: TDictionary<string, TTreeViewItem>;
  LTreeViewItem: TTreeViewItem;
  LParent: TFmxObject;
  LKey: string;
begin
  LTreeDict := TDictionary<string, TTreeViewItem>.Create( );
  try

    TreeView1.BeginUpdate;
    try

      TreeView1.Clear;

      ClientDataSet1.First;
      while not ClientDataSet1.Eof do
        begin
          LParent := TreeView1;
          LKey := ClientDataSet1Jahr.AsString; // z.B. 2013
          if not LTreeDict.TryGetValue( LKey, LTreeViewItem )
          then
            begin
              LTreeViewItem := TTreeViewItem.Create( nil );
              LTreeViewItem.Parent := LParent;
              LTreeViewItem.Text := ClientDataSet1Jahr.AsString;
              LTreeDict.Add( LKey, LTreeViewItem );
            end;
          LParent := LTreeViewItem;
          LKey := LKey + '\' + ClientDataSet1KW.AsString; // z.B. 2013\44
          if not LTreeDict.TryGetValue( LKey, LTreeViewItem )
          then
            begin
              LTreeViewItem := TTreeViewItem.Create( nil );
              LTreeViewItem.Parent := LParent;
              LTreeViewItem.Text := 'KW' + ClientDataSet1KW.AsString;
              LTreeDict.Add( LKey, LTreeViewItem );
            end;
          LParent := LTreeViewItem;
          LKey := LKey + '\' + ClientDataSet1Tag.AsString; // z.B. 2013\44\28
          if not LTreeDict.TryGetValue( LKey, LTreeViewItem )
          then
            begin
              LTreeViewItem := TTreeViewItem.Create( nil );
              LTreeViewItem.Parent := LParent;
              LTreeViewItem.Text := FormatDateTime( 'DD.MM. dddd', ClientDataSet1Datum.AsDateTime );
              LTreeDict.Add( LKey, LTreeViewItem );
            end;
          LParent := LTreeViewItem;
          LKey := LKey + '\' + ClientDataSet1ID.AsString; // z.B. 2013\44\28\5
          if not LTreeDict.TryGetValue( LKey, LTreeViewItem )
          then
            begin
              LTreeViewItem := TTreeViewItem.Create( nil );
              LTreeViewItem.Parent := LParent;
              LTreeViewItem.Text := ClientDataSet1ID.AsString;
              LTreeDict.Add( LKey, LTreeViewItem );
            end;
          ClientDataSet1.Next;
        end;

    finally
      TreeView1.EndUpdate;
    end;
  finally
    LTreeDict.Free;
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (23. Okt 2014 um 01:27 Uhr)
  Mit Zitat antworten Zitat