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

Langage Delphi Discussion :

Comment vider un treeview avant de le remplir


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut Comment vider un treeview avant de le remplir
    Bonjour,

    J'ai un treeview qui est déjà rempli
    Je veux changer le type d'arborescence avec le code suivant :
    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
    procedure TInfo.RadioGroup1Click(Sender: TObject);
    var
      i: integer;
    begin
      TV.Items.Clear;
      TV.Canvas.Refresh;
      i:= RadioGroup1.ItemIndex;
      case i of
        -1: exit;
        0 : begin
            ReadComponentResFile(CurArboTypeFile+CurBathFile+'.dat',TV);
            StatusBar.SimpleText := CurBathFile;
        end;
        1: begin
            ReadComponentResFile(CurArboTypeFile+CurFamilliesFile+'.dat',TV);
            StatusBar.SimpleText := CurFamilliesFile;
        end;
      end;
      TV.FullExpand;
    end;
    Si le treeview est vide la première action se déroule bien
    Au changement de RadioGroup1.ItemIndex si le treeview a déja été rempli je déclenche une erreur Violation d'accès

    Toutes vos propositions seront les bienvenues pour corriger le tir

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 612
    Points : 25 303
    Points
    25 303
    Par défaut
    ReadComponentResFile !
    Ah oui, tu n'y va pas en douceur !
    Tu n'as rien de plus léger pour stocker ton TV ?
    Tu pourrais utiliser TTreeView.SaveToFile et LoadFromFile, cela donne un fichier bien plus simple à comprendre !

    Je suppose que tu as tester séparément chaque fichier et tous fonctionne !

    au pire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    begin
      TV2 := TTreeView.Create(Self);
      TV2.Parent := TV.Parent;
      TV2.SetBounds(TV.BoundRect);
      TV.Free();
      TV := TV2;
     
      ...
     
    end;
    tu n'avais pas déjà posé la question "Access violation avec treeview" et ne t'avais-je pas déjà conseillé de le faire manuellement comme dans Gestion complète d'une TreeView: ajout de noeuds, records et sauvegarde du tout

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Merci c'est en effet plus simple !

    Mais je suis surpris qu'il n'existe pas sur un treeview une barre de défilement !
    Comment faire pour que l'arborscence soit consultable avec une barre de défilement ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 612
    Points : 25 303
    Points
    25 303
    Par défaut
    Normalement c'est automatique !
    Dans une application à bordel, j'ai un TTreeView, dès que j'ai un élément trop grand ou bcp d'items en vertical, les ScrollBars sont là, j'ai même un Hint sur les Items trop long !

    cette application de test a été compilé sur D7 en 2010 et exécuté sur XP (autre poste que celui de la compil)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut
    Bon j'ai trouvé pourquoi la barre de défilement ne s'affiche pas :
    Le treeview est dans un frame que j'appelle de la form! Je l'ai placé sur la form et ça marche !
    Bizare bizare...

Discussions similaires

  1. comment vider une base de donnée
    Par caps_corp dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 21/04/2004, 16h54
  2. [vb.net] Comment vider un buffer ?
    Par mdc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/12/2003, 15h43
  3. comment vider un schema
    Par otb82 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/10/2003, 13h36
  4. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30
  5. Comment vider un dossier ?
    Par Zinoc dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/06/2002, 14h14

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