retaks666
Messages postés286Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention16 juillet 2007
-
27 sept. 2006 à 17:29
retaks666
Messages postés286Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention16 juillet 2007
-
28 sept. 2006 à 08:42
Bonjour à tous, je cherche a remplir une treeview à partir des différents champs d'une base de donnée. Voici mon code:
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
UIBQuery.SQL.Clear;
UIBQuery.SQL.Add('SELECT * FROM BASE;');
UIBQuery.Execute;
for i := 0 to UIBQuery.Fields.FieldCount - 1 do
begin
if(not isnumeric(UIBQuery.Fields.SqlName[i])) then
treefields.Items.add(nil, UIBQuery.Fields.SqlName[i]);
end;
UIBQUERY.close();
for i := 0 to treeFields.Items.Count - 1 do
begin
//showmessage(inttostr(i) + ' ' + inttostr(treeFields.Items.Count));
UIBQuery.SQL.Clear;
UIBQuery.SQL.Text := 'SELECT DISTINCT ' + treeFields.Items[i].Text + ' FROM BASE;';
UIBQuery.Open;
UIBQuery.First;
while not UIBQuery.EOF do
begin
treefields.Items.AddChild(treeFields.Items[i],UIBQuery.Fields.AsString[0]);
UIBQuery.Next;
end;
UIBQuery.Close();
end;
end;
Seulement lorsque j'ajoutes des enfants, ceux ci sont aussi accessibles par treefields.items, et donc tout est ajouter dans le premier élément. Je ne sais pas comment faire, si quelqu'un pouvait m'aider, ça serait vivement apprécié !@wanadoo.fr / _.'__ `. / /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
retaks666
Messages postés286Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention16 juillet 2007 28 sept. 2006 à 08:42
T'a solution m'oblige à sélectionner tous les enregistrement de premier niveau, et donc d'avoir un treeview multiselect. L'idée de base était de parcourir une table, et de recenser toutes les valeurs des différents champs. J'ai donc le noms des champs en niveau 0, et leur ajoute en enfants les différentes valeurs qu'il peuvent prendre ... Enfin je vais rester sur la solution du downto, les indexs sont décalés, mais vu qu'on vas du dernier au premier, cela ne change rien. Merci de m'avoir aidé !
Voici le changement pour ceux que ça intéresse:
for i := 0 to treeFields.Items.Count - 1 do -> for i := treeFields.Items.Count - 1 downto 0 do
Voila une procedure qui te permet de rajouter un CNode enfant quand tu sélectionnes un CNode Parent et de lui attribuer un string;
Procedure AddAChild;
Var
ACNode : TTreeNode;
Begin
ACNode:=treeFields.Selected;
for i := 0 to (ACnode.Count - 1) do
ACNode:= treefields.Items.AddChild(ACNode,'My string');
end;
retaks666
Messages postés286Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention16 juillet 2007 27 sept. 2006 à 19:06
Je ne veux pas ajouter un enfant a l'item sélectionné, mais parcourir le treeview et ajouter des enfants aux items... J'ai résolu mon problème avec un downto, mais ça fiat un peu bricolage, si quelqu'un pouvait éclairer ma lanterne, ça serait cool !
Merci quand même!
Vous n’avez pas trouvé la réponse que vous recherchez ?
DownTo ne fait pas bricolage lol tout depend comment tu l'utilises
Procedure AddAChild;
Begin
for i := 0 to (TreeView1.Selected.Count - 1) do
treefields.Items.AddChild(ACNode,'My string');
end;
Cette procedure : tu parcrous le treeview et additionne des enfants.
Plutot que de te lancer directement avec un treeview, pk tu n'utilises pas une simple form avec un treeview et un TImageList plutot que de vouloir trouver la solution avec un code deja bien fournit ??