IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Probleme remplissage Treeview avec TUIBDataSet -- UIB


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut Probleme remplissage Treeview avec TUIBDataSet -- UIB
    bonjour,


    j'utilise une table firebird et composants UIB2.5 pour remplir un treeview
    avec les champs
    gl_p:n compte
    niveau_p:niveau dans treeview
    pere_p:le nom de pere dans le treeview

    mais malheuresement tous les enregistrements se créer dans le niveau 1 de la treeview.
    la fonction FindParent ne trouve pas le noeud pere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     procedure TForm1.Button3Click(Sender: TObject);
    var
      niv_max,j:integer;
      Fparent,PNode,PNode2 : TTreeNode;
    begin
           dm.Qr1.SQL.Text :='select max(niveau_p) as ma from c_plan' ;
           dm.Qr1.open;
           if dm.Qr1.recordcount=0 then ShowMessage('aucun compte')else
            niv_max:=dm.Qr1.FieldValues['ma'];
     //showmessage('max est '+inttostr(niv_max)+'');
     
           dm.qr1.SQL.Text :='select * from c_plan' ;
           dm.qr1.open;
           dm.qr1.First;
           while not dm.qr1.Eof do
            begin
             if dm.qr1.FieldValues['niveau_p']=1 then
                  begin
                       PNode:=TreeView1.Items.Add(nil,''+dm.qr1.FieldValues['gl_p']+'');
                       PNode.ImageIndex:=40;
     
                  end;
             dm.qr1.Next;
            end;
            if niv_max>1 then
              begin
                for j:=2 to niv_max do
                 begin
                    dm.qr1.First;
                    while not dm.qr1.Eof do
                      begin
                       if dm.qr1.FieldValues['niveau_p']=j then
                          begin
                                 Fparent:=FindParent(TreeView1,trim(dm.qr1.FieldValues['pere_p']));
                                 PNode:=TreeView1.Items.AddChild(Fparent,dm.qr1.FieldValues['gl_p']);
                                 PNode.ImageIndex:=46;
                          end;
                        dm.qr1.Next;
                      end;
                 end;
              end;
     
     
    end;
    avec Qr1: TUIBDataSet;avec transaction :UIBTransaction1



    alors que avec la même fonction FindParent les enregistrements se créer bien avec des niveaux dans le treeview avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
                       PNode:=TreeView1.Items.Add(nil,'9');
                       PNode.ImageIndex:=40;
     
                       PNode:=TreeView1.Items.Add(nil,'4');
                       PNode.ImageIndex:=40;
     
                       PNode:=TreeView1.Items.Add(nil,'3');
                       PNode.ImageIndex:=40;
     
                       Fparent:=FindParent(TreeView1,'9');
                       PNode:=TreeView1.Items.AddChild(Fparent,'455554');
    fonction findparent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function FindParent(ATree: TTreeView; const ACaption: string): TTreeNode;
    begin
       Result := ATree.Items.GetFirstNode();
       while Assigned(Result) do
       begin
          if Result.Text = ACaption then
            Exit;
          Result := Result.GetNext(); 
       end;
    end;
    j'ai pas compris ou se trouve le probleme UIB!?

    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    j'ai ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PNode:=TreeView1.Items.Add(nil,''+trim(dm.qr1.FieldValues['gl_p'])+'');
    est ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2010, 12h02
  2. Probleme Remplissage ComboBOX avec DATE du mois suivant
    Par RootsInternationnal dans le forum C#
    Réponses: 9
    Dernier message: 16/07/2009, 08h18
  3. Probleme remplissage Array 2d avec un For
    Par Nico820 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2008, 08h37
  4. Probleme de Binding avec un Treeview
    Par thallak dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/07/2007, 09h25
  5. [MFC] probleme remplissage comboBox avec ADOLib
    Par moulefrite dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo