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 :

Treeview et fullexpand


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut Treeview et fullexpand
    Bonjour,

    je fais un fullexpand d'un treeview mais j'ai des problèmes de lenteur!
    En effet, le fullexpand d'un vingtaine d'éléments (4 node level 1 et le reste level 2) mais +- 1 seconde à s'afficher ... ce que je trouve énorme quand je vois parfois certains treeview s'afficher à des vitesses très rapide!

    A la place du fullexpand, j'ai essayé un expand du noed principal anvant de créer un nouveau mais le constat est toujours le même, c'est lent

    J'utilise Delphi 2006 sur un Windows XP SP2 et je travaille en Win32

    Exemple de mon code :

    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
     
    procedure TFrmMeubles.FillExAvalaible(oList: Variant);
    var
      Crit : String;
      ExlCritNode, ExlValNode : TTreeNode;
      i : integer;
    begin
     
      TrVwExAvalaible.AutoExpand := True;
      if oList.Count <= 0 then
      else
      begin
        {
          Ajout du premier élément sans passer dans la boucle
        }
        Crit := oList.ItemList(1).item(1);
        TrVwExAvalaible.Items.AddFirst(nil,Crit);
        ExlCritNode := TrVwExAvalaible.Items.GetFirstNode;
        ExlCritNode.Data := TNodeCritData.Create;
        TNodeCritData(ExlCritNode.Data).id := oList.ItemList(1).item(1);
        TNodeCritData(ExlCritNode.Data).tpe := oList.ItemList(1).item(2);
        for I := 1 to oList.Count do
        begin
     
          if CompareText(Crit,oList.ItemList(i).item(1)) = 0 then
          else
          begin
            crit := oList.ItemList(i).item(1);
            ExlCritNode.Expand(True);
            ExlCritNode := TrVwExAvalaible.Items.Add(ExlCritNode,Crit + ' - ' + oList.ItemList(i).item(2));
            ExlCritNode.Data := TNodeCritData.Create;
            TNodeCritData(ExlCritNode.Data).id := oList.ItemList(i).item(1);
            TNodeCritData(ExlCritNode.Data).tpe := oList.ItemList(i).item(2);
          end;
          ExlValNode := TrVwExAvalaible.Items.AddChild(ExlCritNode,oList.ItemList(i).item(3)
                                     + ' - ' + oList.ItemList(i).item(4) + ' - ' + oList.ItemList(i).item(5));
          ExlValNode.Data := TNodeValData.Create;
          TNodeValData(ExlValNode.Data).Val := oList.ItemList(i).item(3);
        end;
        ExlCritNode.Expand(True);    
        //TrVwExAvalaible.FullExpand;
      end;

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Je dois t'avouer que je n'ai pas regardé ton code dans le détail, mais je suis d'abord etonné que le FullExpand prend environ 1 seconde pour si peu d'élément.

    Il m'arrive fréquemment d'avoir des TreeLists dont le nombre d'éléments est bien supérieur et l'expand est quasi instantanné !
    D'où ma question: Utilises-tu les évéments OnExpanding et/ou OnExpanded ?
    La lenteur du déploiement vient peut-être de là !!

    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut
    En effet, j'ai déjà utilisé se composant et je n'avais jamais rencontré de lenteur particulière non plus.
    Le seul évènement qui est géré sur mon treeview est le OnSelectItem.

    La seule chose qui pourrait m'éclairer sur cette lenteur, c'est le faite de lier la propriété data d'un node a la création d'un record, mais je ne vois pas vraiment en quoi cela ralenti l'affichage

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Re,

    Ta procédure FillExAvalaible est appelé quand ? Une fois pour toute à la création de tes items.

    Est-ce que cette procédure ne serait pas appelé de façon intempestive ?

    PS: Drole de signature que tu as là !!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut
    Non j'avais un problème de cet ordre la mais c'est maintenant réparé, il n'y a qu'un seul passage pour afficher les informations dans mon treeview.
    La procédure est appellée lorsque l'on click sur un item d'un listview.

    Pour la signature, ca représente bien l'était informatique en général

  6. #6
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    avez vous affecter des images au Items du list view si oui sont il différent de chaque items et de quel taille.

    sa peut provenir de sa aussi

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 13h23
  2. TreeView -> ajouter un child à un noeud donné
    Par fake dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/03/2003, 18h14
  3. Réponses: 5
    Dernier message: 09/01/2003, 12h55
  4. où y a t il un tutorial pour le Treeview ??
    Par silvermoon dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 14h30
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 02h44

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