RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 25 juil. 2006 à 04:05
Voilà, j'ai ajouté un paramètre "écartement des contrôles", pour cela il fallait remplacer l'écartement fixé à 250 twips dans le code par une variable dont la valeur, toujours de 250 par défaut, peut être modifiée dans la fenêtre de configuration (de 0 à 9999 twips).
En ce qui concerne un affichage vertical de l'arborescence, je pense que le plus simple serait de créer un deuxième contrôle en le dessinant en fonction d'un affichage vertical, et de réutiliser tout le code du premier contrôle en inversant les traitements des coordonnées horizontales et verticales.
Pour ce qui est de la procédure "Reorganise", j'avais été rebuté par la complexité de l'algorithme à créer pour répartir les contrôles selon plusieurs axes de symétrie. Je n'avais trouvé aucun algorithme pouvant être adapté au cours de mes recherches et toutes les solutions que j'avais envisagées nécessitaient de monter et descendre plusieurs fois l'arborescence en retouchant les emplacements, ce qui n'était décidément pas trop propre.
Pour une utilisation réelle du programme le nombre de niveaux reste limité et le calage vers la gauche de la procédure "Arrange" ne présentait pas de réel inconvénient, j'ai donc laissé tomber malgré mon "souci du détail" ;o) et je suis passé à d'autres projets. Si le coeur t'en dit de reprendre cette source et même de la redéposer après modification, elle est là pour ça.
Il y avait un bug qui pouvait survenir lors du collage d'une grosse fonction dans la fenêtre de texte, à l'affichage de l'arborescence. En effet, l'appel de la fonction GetNewPos devait se faire par le contrôle principal sans quoi une partie de l'arborescence pouvait être négligée et certains contrôles superposés. Dans la procédure "CreateCtl", la fonction "GetNewPos" doit être appelée comme suit :
lngTestPos = MasterCtl.GetNewPos(.Niveau, .Id)
Je viens de me rappeler qu'il y avait des fautes de frappe dans une boîte de dialogue que j'ai oubliées de corriger avant de télécharger le zip. Tant pis, ça sera pour la prochaine fois. Bonne prog', je suis dispo pour de l'aide dans la mesure de mon temps libre.
Amicalement,
Rico
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 24 juil. 2006 à 18:11
Salut JCJ, mieux vaut tard que jamais. Je suis content d'apprendre qu'au moins une personne ait pu faire fonctionner le projet. Il y a très longtemps que je ne me suis plus penché sur ce code et je suis en train de me rafraîchir la mémoire.
A+
Rico
jcljay
Messages postés3Date d'inscriptionmardi 17 juin 2003StatutMembreDernière intervention 2 août 2006 24 juil. 2006 à 16:00
Hello, j'arrive après la bataille...
Bon, je suis parvenu à lancer l'appli (pas Appil), en suivant à la lettre les instructions du 'A lire.txt'.
J'ai recherché dans mes bases Access des IIF, j'ai pris le premier de niveau 5 (quand même) pour faire des tests. Tout semble fonctionner comme attendu.
Mais comme chacun a ses goûts, je voulais modifier l'écart entre les Box IIF et là, il faut rentrer dans le code de l'ocx... Malgré la clarté du code (bravo!), les passages de paramètres entre exe et ocx (et en récursif!) dépassent mon niveau
actuel en VB.
Donc je voulais suggérer les améliorations suivantes à ce source:
- pouvoir choisir l'espacement entre les box,
- pouvoir choisir entre une arboressance verticale ou horizontale,
- finir la procédure Réorganise (qui devrait remplacer/compléter Arrange).
Encore bravo pour ce code, je vais beaucoup apprendre gràce à lui et j'espère apporter moi-même les modifs suggérées.
A+ (c'est pas un nom de langage c'est pour dire à plus tard ;)
JCJ
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 2 nov. 2004 à 13:51
Merci Appil... Pourrais-tu me faire savoir si tu as réussi à lancer l'exécution, car pour l'instant je ne suis pas sûr que quiconque y soit arrivé...
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 2 nov. 2004 à 11:34
Iif est l'une de mes fonctions conditionnelles préférées, ta source est sûrement intéressante. D'après la capture, ça à l'air bien fait. Merci pour la source.
Bonne programmation
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 2 nov. 2004 à 01:16
Info : j'ai modifié la source pour qu'elle soit plus facile à mettre en oeuvre. Tout message concernant vos tentatives serait le bienvenu. Merci d'avoir affiché cette source.
RicoNuch
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 26 oct. 2004 à 17:56
Qu'est-ce que tu as comme erreur ?
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 26 oct. 2004 à 17:39
Tu as raison ;O) J'ai suivi tes instructions mais je n'arrive pas à lancer la source. Je teste encore...
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 26 oct. 2004 à 12:16
Ok, les mecs, on a compris : empiler les Iif, c'est pas bien, il faut plutôt faire comme ci ou comme ça etc... Ça serait vachement cool si les prochains commentaires portaient sur la source elle-même plutôt que la façon d'éviter de s'en servir.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 26 oct. 2004 à 11:54
Pour le SQL il y a une alternative : appeler une fonction VBA, cela permet même de deboguer pas à pas (mais c'est parfois très complexe)
Pour le VBA il y a aussi une alternative :
If Not Condition1 Then Goto Suite
If Not Condition2 Then Goto Suite
...
C'est beaucoup plus clair ainsi, car il suffit d'énumérer la liste des conditions à satisfaire.
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 25 oct. 2004 à 20:25
Bon ben je n'insiste pas... J'espère seulement que d'autres, qui en auront empilées au moins trois, verront cette source...
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 25 oct. 2004 à 17:27
En effet, ayant souvent travaillé dans des requêtes en Access, les IIF m'ont souvent bien aidé. Il est vrai que je les utilise encore en VB pour des requêtes Access mais je limite l'imbrication à 2.
RicoNuch
Messages postés140Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention16 décembre 2006 25 oct. 2004 à 14:45
D'accord avec toi, Neo.balastik, il est évident que dans VB une bonne série de If...ElseIf vaut bien mieux que des imbrications de Iif. Mais pour tenir dans une seule cellule d'Excel ou une seule requête d'Access, la fonction Iif est incontournable. Quant à la clarté du code, disons que dans mon éditeur l'imbrication des fonctions devient beaucoup plus évidente...
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 25 oct. 2004 à 13:08
Joli exercice de style, mais l'utilisation de IIF imbriqués est plus que déconseillé tant pour la clareté du code que pour les performances.
Je jetterai un oeil sur ta source histoire de voir comment tu as construit cela, mais je n'utiliserai jamais la structure du IIF imbriqué dans un projet VB. ILLISIBLE !
25 juil. 2006 à 04:05
En ce qui concerne un affichage vertical de l'arborescence, je pense que le plus simple serait de créer un deuxième contrôle en le dessinant en fonction d'un affichage vertical, et de réutiliser tout le code du premier contrôle en inversant les traitements des coordonnées horizontales et verticales.
Pour ce qui est de la procédure "Reorganise", j'avais été rebuté par la complexité de l'algorithme à créer pour répartir les contrôles selon plusieurs axes de symétrie. Je n'avais trouvé aucun algorithme pouvant être adapté au cours de mes recherches et toutes les solutions que j'avais envisagées nécessitaient de monter et descendre plusieurs fois l'arborescence en retouchant les emplacements, ce qui n'était décidément pas trop propre.
Pour une utilisation réelle du programme le nombre de niveaux reste limité et le calage vers la gauche de la procédure "Arrange" ne présentait pas de réel inconvénient, j'ai donc laissé tomber malgré mon "souci du détail" ;o) et je suis passé à d'autres projets. Si le coeur t'en dit de reprendre cette source et même de la redéposer après modification, elle est là pour ça.
Il y avait un bug qui pouvait survenir lors du collage d'une grosse fonction dans la fenêtre de texte, à l'affichage de l'arborescence. En effet, l'appel de la fonction GetNewPos devait se faire par le contrôle principal sans quoi une partie de l'arborescence pouvait être négligée et certains contrôles superposés. Dans la procédure "CreateCtl", la fonction "GetNewPos" doit être appelée comme suit :
lngTestPos = MasterCtl.GetNewPos(.Niveau, .Id)
Je viens de me rappeler qu'il y avait des fautes de frappe dans une boîte de dialogue que j'ai oubliées de corriger avant de télécharger le zip. Tant pis, ça sera pour la prochaine fois. Bonne prog', je suis dispo pour de l'aide dans la mesure de mon temps libre.
Amicalement,
Rico
24 juil. 2006 à 18:11
A+
Rico
24 juil. 2006 à 16:00
Bon, je suis parvenu à lancer l'appli (pas Appil), en suivant à la lettre les instructions du 'A lire.txt'.
J'ai recherché dans mes bases Access des IIF, j'ai pris le premier de niveau 5 (quand même) pour faire des tests. Tout semble fonctionner comme attendu.
Mais comme chacun a ses goûts, je voulais modifier l'écart entre les Box IIF et là, il faut rentrer dans le code de l'ocx... Malgré la clarté du code (bravo!), les passages de paramètres entre exe et ocx (et en récursif!) dépassent mon niveau
actuel en VB.
Donc je voulais suggérer les améliorations suivantes à ce source:
- pouvoir choisir l'espacement entre les box,
- pouvoir choisir entre une arboressance verticale ou horizontale,
- finir la procédure Réorganise (qui devrait remplacer/compléter Arrange).
Encore bravo pour ce code, je vais beaucoup apprendre gràce à lui et j'espère apporter moi-même les modifs suggérées.
A+ (c'est pas un nom de langage c'est pour dire à plus tard ;)
JCJ
2 nov. 2004 à 13:51
2 nov. 2004 à 11:34
Bonne programmation
2 nov. 2004 à 01:16
RicoNuch
26 oct. 2004 à 17:56
26 oct. 2004 à 17:39
26 oct. 2004 à 12:16
26 oct. 2004 à 11:54
Pour le VBA il y a aussi une alternative :
If Not Condition1 Then Goto Suite
If Not Condition2 Then Goto Suite
...
C'est beaucoup plus clair ainsi, car il suffit d'énumérer la liste des conditions à satisfaire.
25 oct. 2004 à 20:25
25 oct. 2004 à 17:27
25 oct. 2004 à 14:45
25 oct. 2004 à 13:08
Je jetterai un oeil sur ta source histoire de voir comment tu as construit cela, mais je n'utiliserai jamais la structure du IIF imbriqué dans un projet VB. ILLISIBLE !