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

WinDev Discussion :

Souci dans une liste


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut Souci dans une liste
    Bonsoir à tous

    J'ai un petit souci tous bête qui me bloque.

    Des que je fait une recherche dans ma table, sa m'enregistre ma recherche dans une liste nommée "LISTE_Mots". La liste se remplie sur 20 entrées. A la 21ième recherche, la première s'auto efface.

    J'ai un bouton non visible. Je cherche le code d'initialisation qui le rend visible si il y au minimum 2 entrées dans ma liste. Ainsi que l'incrémentation en -- pour revenir 1 fois en arrière et le rendre invisible des qu'on est revenu à 0.

    Merci à ceux qui pourrais me donner un coup de main

    Amicalement

  2. #2
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Pas sur d'avoir bien compris ta demande...
    Mais il existe la fonction ListeOccurrence() qui renvoie le nombre d'éléments présents dans une liste.
    Pour la visibilité de ton bouton il y la propriété ..visible = vrai/faux.
    Place ton code dans une procédure qu'il te faut lancer à l'initialisation et aussi quand tu ajoutes ou enlèves une ligne à la liste.
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonsoir laurent30s

    Pour faire simple, je suis sur la conception d'un dictionnaire. J'ai ma base avec mes noms et définitions. Dans ma barre de recherche, à chaque nom chercher sa m'envoie la définition dans un champ HTML.

    Pour la création des boutons Précédent et suivant, j'ai tester avec HTMLNavigue mais aucun effet. Je me suis donc rabattu sur une liste qui m’enregistre les recherches effectuer. Ma liste m'enregistre les 20 dernière recherches effectuer.

    Je cherche a rendre visible le bouton Précédent. Si il y a minimum 2 noms dans la liste. Et sur le clic, incrémenter de -- pour passé à la recherche précédemment effectuer et le rendre invisible dès qu'on est revenu a 0 dans la liste.

    Et de faire la même pour le bouton suivant. Le rendre visible des qu'il y a eu au moins un précédent de cliquer et le rendre invisible des qu'on est au dernier mot enregistré dans la liste.

    Je vais déjà regarder du coté de ListeOccurrence()

    Amicalement

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour à tous

    J'ai réussi a dégrisé les bouton si la liste se rempli par contre j'arrive pas à incrémenter ou décrémenter la liste si j'appuis sur suivant ou précédent.

    Amicalement

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    la façon de faire que je prendrais serait la suivante :

    1 table avec un indice + une chaine

    Un indice courant qui te permet de savoir sur quelle ligne tu es.

    Ensuite tu créés une procédure qui te fait naviguer :

    si clic sur précédent, on diminue la valeur de indice courant de 1.
    si clic sur suivant, on augmente la valeur de indice courant de 1.
    Affichage des données en fonction du nouvel indice courant et de la chaine pour la recherche.
    On vérifie si l'indice courant n'est pas 1 ou le nombre de ligne du tableau et on grise le bouton correspondant.

    Bref, si tu nous donnes un peu de code à grignoter on sera ravi !

    à bientôt,

    Nicolas

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour Nicolas_Jeanneau

    Pour que les noms s'enregistre dans la liste, dans ma table à "Sélection d'une ligne de table_base", j'ai mit :
    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
    nIGrisé est un entier = 0
    nIVisible est un entier= 2
    nRechercheliste est un entier
     
    nRechercheliste = ListeOccurrence(LISTE_Mots)
     
    SI nRechercheliste = nIVisible ALORS
       BTN_SansNom15..Visible = Vrai
       BTN_SansNom5..Visible = Faux
    FIN
     
    SI nRechercheliste = nIGrisé ALORS
       BTN_SansNom15..Visible = Faux
       BTN_SansNom5..Visible = Vrai
    FIN
    Juste avec cela, sa m'inscrit que des numéros. Pour avoir le nom exacte du mot qui à été rechercher, j'ai intégré dans "Sélection d'une ligne de LISTE_Mots" dans ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sRepExe est une chaîne 
     
    HLitRecherche(Base,Noms,LISTE_Mots[ListeSelect(LISTE_Mots)])
     
    SI HTrouve(Base) ALORS
       HTM_HTML1=Remplace(Base.Définitions,"*Chemin*",sRepExe+"/Medias")
    FIN
    Pour info :
    Mon bouton Précédent est : BTN_SansNom15
    Mon bouton Suivant est : BTN_SansNom5

    amicalement

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Le code que Nicolas_Jeanneau souhaiterait grignoter est celui de la navigation : comment faites-vous pour aller à la ligne précédente / suivante ?

    Pour connaître l'indice de la ligne sélectionnée, voir ListeSelect() ou TableSelect()

    Quant à votre code :

    Citation Envoyé par squall049 Voir le message

    "Sélection d'une ligne de table_base", j'ai mit :
    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
    nIGrisé est un entier = 0
    nIVisible est un entier= 2
    nRechercheliste est un entier
     
    nRechercheliste = ListeOccurrence(LISTE_Mots)
     
    SI nRechercheliste = nIVisible ALORS
       BTN_SansNom15..Visible = Vrai
       BTN_SansNom5..Visible = Faux
    FIN
     
    SI nRechercheliste = nIGrisé ALORS
       BTN_SansNom15..Visible = Faux
       BTN_SansNom5..Visible = Vrai
    FIN

    Pour info :
    Mon bouton Précédent est : BTN_SansNom15
    Mon bouton Suivant est : BTN_SansNom5
    Il serait sans doute plus facile (déjà maintenant et surtout pour les relectures à venir dans 100 ou 200 ans ... !) de renommer vos boutons.
    Par exemple :
    Votre bouton Précédent serait : BTN_Précédent SansNom15
    Votre bouton Suivant serait : BTN_Suivant SansNom5

    Votre code peut être plus structuré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    nIGrisé est un entier = 0
    nIVisible est un entier= 2
    nRechercheliste est un entier = ListeOccurrence(LISTE_Mots)
     
    SELON nRechercheliste 
       CAS nIVisible 
          BTN_Précédent..Visible = Vrai
          BTN_Suivant ..Visible = Faux
       CAS nIGrisé 
          BTN_Précédent..Visible = Faux
          BTN_Suivant ..Visible = Vrai
    FIN
    Bonne fin de journée

    Hemgé

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Alors au niveau de ce que je te proposais, tu aurais :

    Dans les variables globales à la fenêtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Déclararation d'un tableau de chaînes de recherche
    TableauValeur est un tableau <agrandissement=20> de chaînes
    // Déclaration d'un entier pour l'indice courant
    IndiceCourant est un entier = 0
    Derrière "Sélection d'une ligne de table_base", on aurait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SI TableauValeur[20] <> "" ALORS
         // Parcours du tableau en affectant l'élément TableauValeur[N+1] à TableauValeur[N]
         // Affectation de la valeur à l'élément TableauValeur[20]
         // IndiceCourant = 20
    SINON
        // Parcours du tableau en cherchant le premier emplacement de libre à partir du début
        // Affectation de la valeur à l'élément libre trouvé
        // Affectation à IndiceCourant de l'indice de l'élément libre trouvé
    FIN
    RechercheEtBoutons()
    Ensuite, tu dois avoir une procédure qui effectue la recherche et grise ou non les boutons :

    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
    Procédure RechercheEtBoutons()
    HLitRecherche(Base,Noms,TableValeur[IndiceCourant])
    SI HTrouve(Base) ALORS
       HTM_HTML1=Remplace(Base.Définitions,"*Chemin*",sRepExe+"/Medias")
    FIN
     
    SI IndiceCourant = 20 ALORS
       BTN_SansNom15..Visible = Vrai
       BTN_SansNom5..Visible = Faux
    FIN
     
    SI IndiceCourant < 2 ALORS
       BTN_SansNom15..Visible = Faux
       BTN_SansNom5..Visible = Vrai
    FIN
    Derrière le bouton Précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IndiceCourant -= 1
    RechercheEtBoutons()
    Derrière le bouton Précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IndiceCourant += 1
    RechercheEtBoutons()

Discussions similaires

  1. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  2. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20
  3. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09
  4. Réponses: 2
    Dernier message: 17/08/2003, 20h07
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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