Hello tous,
Attention casse-tête !
Le but est de pouvoir afficher un bouton juste à côté d'une ligne sélectionnée dans une table. Jusque là rien de très méchant.
Le problème est que cette table n'a pas de longueur fixe. C'est à dire que sa taille varie en fonction du nombre d'enregistrement qu'elle contient.
Contrainte supplémentaire, cette table doit évidemment stopper sa croissance au bon moment pour ne pas sortir du cadre dans lequel elle se trouve. Lorsqu'elle atteint cette taille maximale, un ascenseur doit apparaître pour permettre de consulter les enregistrements supplémentaires tout en gardant cette taille maximale.
Pour être plus concret, cette table représente un bon d’achat et elle contient les articles que le client compte acheter. Lorsqu’il passe à la caisse, ses article sont scannés et ajouté à la table à chaque fois.
Le bouton qui doit s’afficher à côté de la ligne sélectionnée permet de supprimer l’article voulu.
Voici le code qui me permet d’afficher le bouton à côté de la ligne sélectionnée dans la table. Celui-ci s’exécute lors de la sélection d’une ligne dans cette table donc.
TableHMax est le nombre maximum de ligne que peut afficher la table simultanément (sans ascenseurs donc)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 VraiPos est un entier = TableSelect(TABLE_Commande) - (TableOccurrence(TABLE_Commande) - TableHmax) SI TableOccurrence(TABLE_Commande) > TableHMax ALORS FEN_AchatConso.BTN_SupprimeArticle..Y = BtnSupprimeYInit + TableHauteurLigne * VraiPos SINON FEN_AchatConso.BTN_SupprimeArticle..Y = BtnSupprimeYInit+ TableHauteurLigne * TableSelect(TABLE_Commande) FIN
VraiPos permet de connaître la vraie position de la ligne dans la table, même si celle-ci dépasse sa longueur maximale (apparition des ascenseurs). Pour cela je soustrait le nombre de ligne se trouvant « hors » de la table au table select de la ligne en cours.
BtnSupprimeYInit est la position initiale du bouton supprimer en Y (lorsque la table vaux 1 donc)
Tout marche à merveille avec ce code mais… uniquement lorsque le dernier enregistrement est visible… C’est logique car lorsque l’on remonte vers le haut dans la table avec les ascenseurs, VraiPos n’indique plus du tout la position réelle étant donné que le nombre que je soustrais au table select est le nombre maximum d’enregistrement pouvant se trouver hors de la table !
Comment faire pour savoir ou l’on se trouve dans la table ? Y a-t-il moyen de savoir quand l’utilisateur remonte l’ascenseur de la table ? Ou le descend ? Idem avec la roulette ?
Merci de votre recherche et à bientôt j’espère !
Partager