2009-01-21 7 views
2

Mon problème est une arborescence dans mon application Access 2002.TreeView remplit seul et se bloque Accès

Il est déjà rempli lorsque j'ouvre le formulaire. Ce qui est étrange, car le seul code qui ajoute les nœuds est lié à un bouton.

En outre, seule une partie des données est affichée et lorsque je bascule entre les onglets(), les données dans l'arborescence dupliquent/doublent. Lorsque je clique sur un autre onglet Accédez immédiatement à un blocage comme * zap *

Est-il nécessaire de nettoyer une arborescence?

D'autres idées ce que le problème pourrait être - des solutions bienvenues aussi;)

Cheers, Ramon

+0

Il n'y a pas de contrôle TreeView natif et quelques développeurs professionnels que je connais l'utilisent. C'est dommage que MS n'ait pas fait un meilleur travail sur ce front, car c'est une interface familière et utile. –

Répondre

0

je vous remercie pour vos suggestions.

Je n'ai toujours pas découvert pourquoi les données sont chargées dans le TreeView, mais j'ai trouvé une solution.

J'ai d'abord commencé à nettoyer le TreeView lorsque le formulaire est chargé.
Cela a vraiment fait du bien à la stabilité. Maintenant, il est possible de cliquer autour sans accèder à l'accès.

Lorsque des données sont chargées dans TreeView, l'ancien comportement réapparaît. La commutation entre les onglets ajoute plus de données et finalement bloque l'accès.

Il semble que TreeView (Version 6.0) se reconstruise sans nettoyage correct.
Sur la base de cette hypothèse, je supprime et reconstruit le TreeView lors du passage à l'onglet contenant.

Je suis toujours intéressé par la cause première, mais ça marche maintenant.

Merci encore, Ramon

0

Tout d'abord, savoir pourquoi le TreeView chargement lorsque vous ne l'avez pas dit à encore. Parcourez votre code. Vous devez résoudre cela en premier. Deuxièmement, le formulaire plante-t-il si vous ne chargez pas TreeView mais que vous changez d'onglet?

1

Je suis venu sur ce problème et tracé vers le bas pour le contrôle TreeView n'aime pas être sur une page de l'onglet. Vous devrez redessiner votre formulaire pour conserver l'arborescence en dehors de l'onglet.

Si elle doit apparaître comme sur une page de l'onglet, vous pouvez essayer .......

Placer derrière le treeview contrôle onglet. Définition de l'arrière-plan du contrôle onglet sur transparent. Dans l'événement "On Change" de l'onglet on le contrôle pour vérifier quel onglet est sélectionné. Si c'est l'onglet que vous voulez, alors définissez l'arborescence à visbale sinon masquer

1

J'utilise un wrapper VCL (Delphi/BCB) comme contrôle Tree View sur un onglet (TTreeView sur un TPageControl). Mon programme se bloque une fois que j'appelle TreeView1.Items.Clear. Mais seulement dans certains cas! Surtout si j'élargis un élément et ensuite j'essaie d'effacer() tous les éléments.Si je ne touche jamais un nœud (ou seulement défile), c'est bien.

J'ai découvert que définir le nœud sélectionné sur NULL juste avant d'appeler Items.Clear l'a résolu pour moi.

Fait intéressant, appelant Clear() a causé quelques événements OnChange se produire pour une raison quelconque, qui n'a pas été prévu (puisque nous supprimons tous les nœuds quand même!) ...

0

Je ne peux pas croire ce problème persiste et aucune correction n'a été publiée par Microsoft! J'ai rencontré le même problème avec Windows 8.1 exécutant Office 2010

Dans tous les cas, la solution de contournement la plus simple que j'ai atteinte (et qui enregistre probablement des ressources) était de créer le TreeView de l'onglet actuellement actif dans le formulaire "On Current Event". ".

Private Sub Form_Current() 
    Select Case Me.tabCompany.Value 'Return Page Index of active page 
     Case 0 ' Page Index for Page 1. 
      Call TVPage1 
     Case 1 ' Page Index for Page 2. 
      Call TVPage2 
    End Select 
End Sub 

Une autre chose à garder à l'esprit est d'exécuter la même routine pour mettre à jour le TreeView lors du passage d'une page à l'autre « sur le changement de l'événement » de l'onglet:

Private Sub tabCompany_Change() 
    Select Case Me.tabCompany.Value 'Return Page Index of active page 
     Case 0 ' Page Index for Page 1. 
      Call TVPage1 
     Case 1 ' Page Index for Page 2. 
      Call TVPage2 
    End Select 
End Sub 

Cheers!