|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Table Multi-sélection / Anomalie.. |
Débuté par andre.escallier, 14 nov. 2006 07:17 - 3 réponses |
| |
| | | |
|
| |
Posté le 14 novembre 2006 - 07:17 |
Bonjour,
Dans une fenêtre j’ai créé une table multi-sélection reliée à un fichier, ainsi qu’un bouton permettant la suppression des lignes sélectionnées. Tout fonctionne parfaitement, à l’exception d’un cas bien précis, lorsque le nombre de lignes remplissant la table est supérieur au nombre de lignes affichées ( donc visibles ) de celle-ci :
Exemple de manip. n° 1 : Si je sélectionne une ou plusieurs lignes parmi celles visibles de la table, ( sans déplacement de l’ascenseur ) , puis Click sur bouton de suppression, tout est OK, la suppression des lignes sélectionnées est effectuée.
Exemple de manip. n° 2 : Si je sélectionne la « presque ou totalité » des lignes de la table suivant la méthode ci-après, soit : 1- Sélection de la première ligne de la table avec la souris 2- Déplacement avec l’ascenseur sur la dernière ligne de la table ( Cela a pour effet de rendre invisibles les lignes affichées dans la partie supérieure de la table ) , et l’ascenseur est positionné au bas de sa « glissière » ) 3- Appui sur touche « MAJ » Sélection de la dernière ligne de la table avec la souris ( toutes les lignes de la table sont alors sélectionnées ) 4 – Click sur Bouton de suppression  Résultat : Rien ne se passe !
Exemple de manip. n° 3 Suivant le même processus utilisé dans l’exemple n° 2, mais en sélectionnant d’abord la dernière ligne de la table, puis la première, ce qui a pour effet de positionner l’ascenseur sur la partie haute de sa « glissière », alors la suppression est parfaitement effectuée lors du click sur Bouton de suppression.
Quelqu’un a-t-il eu le même problème ? ( J’utilise WD 9.00 )
Merci d’avance pour vos réponses……….
Voici CI-DESSOUS, pour compréhension, le code sur évènement « Click » du bouton DE SUPPRESSION DES LIGNES ( Les lignes « INFOS » sont rajoutées uniquement pour aide au débuggage et contrôle visuel lors du processus de suppression. )
SI OuiNon("Voulez-vous vraiment supprimer la (les) ligne(s) sélectionnée(s) ?") ALORS nb_lignes_selectionnees = TableSelectOccurrence(Table_ORDRES_FABRICATION) nb_lignes_a_supprimer = nb_lignes_selectionnees //info(" Nombre de lignes à supprimer = " nb_lignes_a_supprimer) SI nb_lignes_a_supprimer > 0 ALORS TANTQUE nb_lignes_a_supprimer > 0 indice_flag_selection = TableSelect(Table_ORDRES_FABRICATION,1) //Info(" le nombre de lignes sélectionnées dans la table est : " nb_lignes_a_supprimer CR " L'indice de la ligne à supprimer [ ] est : " indice_flag_selection) //Info("ON VA SUPPRIMER LA LIGNE D' INDICE N° " indice_flag_selection) TableSupprime(Table_ORDRES_FABRICATION,indice_flag_selection) FIN nb_lignes_a_supprimer = nb_lignes_a_supprimer - 1 FIN FIN |
| |
| |
| | | |
|
| | |
| |
Posté le 14 novembre 2006 - 09:15 |
André a présenté l'énoncé suivant :
Bonjour,
Dans une fenêtre j’ai créé une table multi-sélection reliée à un fichier, ainsi qu’un bouton permettant la suppression des lignes sélectionnées. Tout fonctionne parfaitement, à l’exception d’un cas bien précis, lorsque le nombre de lignes remplissant la table est supérieur au nombre de lignes affichées ( donc visibles ) de celle-ci :
Exemple de manip. n° 1 : Si je sélectionne une ou plusieurs lignes parmi celles visibles de la table, ( sans déplacement de l’ascenseur ) , puis Click sur bouton de suppression, tout est OK, la suppression des lignes sélectionnées est effectuée.
Exemple de manip. n° 2 : Si je sélectionne la « presque ou totalité » des lignes de la table suivant la méthode ci-après, soit : 1- Sélection de la première ligne de la table avec la souris 2- Déplacement avec l’ascenseur sur la dernière ligne de la table ( Cela a pour effet de rendre invisibles les lignes affichées dans la partie supérieure de la table ) , et l’ascenseur est positionné au bas de sa « glissière » ) 3- Appui sur touche « MAJ » Sélection de la dernière ligne de la table avec la souris ( toutes les lignes de la table sont alors sélectionnées ) 4 – Click sur Bouton de suppression  Résultat : Rien ne se passe !
Exemple de manip. n° 3 Suivant le même processus utilisé dans l’exemple n° 2, mais en sélectionnant d’abord la dernière ligne de la table, puis la première, ce qui a pour effet de positionner l’ascenseur sur la partie haute de sa « glissière », alors la suppression est parfaitement effectuée lors du click sur Bouton de suppression.
Quelqu’un a-t-il eu le même problème ? ( J’utilise WD 9.00 )
Merci d’avance pour vos réponses……….
Voici CI-DESSOUS, pour compréhension, le code sur évènement « Click » du bouton DE SUPPRESSION DES LIGNES ( Les lignes « INFOS » sont rajoutées uniquement pour aide au débuggage et contrôle visuel lors du processus de suppression. )
SI OuiNon("Voulez-vous vraiment supprimer la (les) ligne(s) sélectionnée(s) ?") ALORS nb_lignes_selectionnees = TableSelectOccurrence(Table_ORDRES_FABRICATION) nb_lignes_a_supprimer = nb_lignes_selectionnees //info(" Nombre de lignes à supprimer = " nb_lignes_a_supprimer) SI nb_lignes_a_supprimer > 0 ALORS TANTQUE nb_lignes_a_supprimer > 0 indice_flag_selection = TableSelect(Table_ORDRES_FABRICATION,1) //Info(" le nombre de lignes sélectionnées dans la table est : " nb_lignes_a_supprimer CR " L'indice de la ligne à supprimer [ ] est : " indice_flag_selection) //Info("ON VA SUPPRIMER LA LIGNE D' INDICE N° " indice_flag_selection) TableSupprime(Table_ORDRES_FABRICATION,indice_flag_selection) FIN nb_lignes_a_supprimer = nb_lignes_a_supprimer - 1 FIN FIN
si vous êtes en WD10 utilisez "pour toutes lignes sélectionnées"
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Posté le 15 novembre 2006 - 21:26 |
Merci J-P pour votre réponse. Je développe sur WD 9.00 et désirerais savoir comment résoudre ce problème car de nombreuses fenêtres de mon programme contiennent des Tables fichiers multi-sélection.
J'ai trouvé une partie de la solution qui consiste, avec appui simultané des touches CTRL Touche "Début" à faire remonter l'ascenseur de la table dans la partie supérieure haute de sa glissière. La sélection de toutes les lignes reste active et le focus est donné à la première ligne de la table. Résultat = la suppression est réalisée parfaitement.
Afin que l'action sur les Touches soit transparente pour l'utilisateur, j'ai donc simulé cette action par la fonction : EnvoieTouche("^{ORIGINE}"), mais ce code ne provoque pas de résultat. C'est la première fois que j'expérimente cette fonction .... Peut-être ai-je commis une erreur de syntaxe ? Merci d'avance pour votre aide....
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Posté le 16 novembre 2006 - 09:38 |
André avait soumis l'idée :
Merci J-P pour votre réponse. Je développe sur WD 9.00 et désirerais savoir comment résoudre ce problème car de nombreuses fenêtres de mon programme contiennent des Tables fichiers multi-sélection.
J'ai trouvé une partie de la solution qui consiste, avec appui simultané des touches CTRL Touche "Début" à faire remonter l'ascenseur de la table dans la partie supérieure haute de sa glissière. La sélection de toutes les lignes reste active et le focus est donné à la première ligne de la table. Résultat = la suppression est réalisée parfaitement.
Afin que l'action sur les Touches soit transparente pour l'utilisateur, j'ai donc simulé cette action par la fonction : EnvoieTouche("^{ORIGINE}"), mais ce code ne provoque pas de résultat. C'est la première fois que j'expérimente cette fonction .... Peut-être ai-je commis une erreur de syntaxe ? Merci d'avance pour votre aide....
Cordialement,
essayez ceci je viens de faire le test [WD9 25k] sur une table de 2636 lignes et cela fonctionne
i est un entier
POUR i=1 A TableSelectOccurrence(MaTable) Trace("Ligne sélectionnée : "+MaTable[TableSelect(MaTable,i)]) FIN
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|