1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
var
FieldList: TStringList;
...
procedure TfrmMain.FillTree;
begin
With ModuleDonnees do
begin
FieldList := TStringList.create;
TreeView1.Items.Clear;;
TreeView1.items.BeginUpdate;
LeQuery.first;
while not LeQuery.eof do
begin
TreeAddItem(TreeView1, GetFieldList, LeQuery.getBookmark, false);
LeQuery.next;
end;
FieldList.clear;
TreeView1.items.Endupdate;
fieldList.free;
end;
// Le query a un truc du style
// select champ1,Champ2,Champ3 from latable
// order by champ1,champ2,champ3
function TfrmMain.GetFieldList: TStringList;
begin
With ModuleDonnees do
begin
FieldList.clear;
FieldList.add(LeQuery.fieldbyname('Champ1').asstring);
FieldList.add(LeQuery.fieldbyname('Champ2').asstring);
FieldList.add(LeQuery.fieldbyname('Champ3').asstring);
Result := FieldList;
end;
end;
function TfrmMain.TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode;
var
ThisNode, Node: TTreeNode;
I: Integer;
begin
Node := nil; //nil = level 0 has no parent node
//this is checked by TreeFindItem
for I := 0 to Itemlist.count -1 do
begin
ThisNode := TreeFindItem(Sender, node, Itemlist[i]);
if ThisNode <> nil then Node := ThisNode else
begin
if I < Itemlist.count -1 then
begin
if I = 0 then Node := Sender.items.AddObject(Node, Itemlist[i],Bookmark)
else Node := Sender.items.AddChildObject(Node, Itemlist[i], BookMark);
end else
begin
if I = 0 then Node := Sender.items.AddObject(Node, Itemlist[i], Bookmark)
else Node := Sender.items.AddChildObject(Node, Itemlist[i], Bookmark);
end;
Node.stateIndex := Node.level + 1;
if Resort and (Node.parent <> nil) then Node.parent.alphasort;
end;
end;
Result := Node;
end; |
Partager