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 :

ouverture de fenêtres par sélection de cellules d'une table. [WD17]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut ouverture de fenêtres par sélection de cellules d'une table.
    Bonjour à tous,

    j'ai un petit souci je voudrai ouvrir des fenêtres en selectionnant des cellules d'une table fichier selon les colonnes afin de pouvoir modifier le contenue. Cela parait pourtant simple, mais mon code ne fonctionne pas?

    voici mon code.

    ce code et dans le code table BOUTON GAUCHE ENFONCE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SI COL_Substrat=Vrai ALORS 
    	Ouvre(FEN_ModifSubstrat)
    SINON SI COL_Revetement=Vrai ALORS
    	Ouvre(FEN_AjoutRvt)
    SINON SI COL_Detail= Vrai ALORS
    	Ouvre(FEN_Ajoutdetail)
     
    	ect... ect..
    FIN
    ce code fonctionne pas?
    Merci pour vos réponse.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Quand on pose une question sur un forum, ou quand on donne un ordre à un ordinateur, il faut être précis.
    Et ce qu'on peut dire, c'est que tu manques de précision.

    Tu dis que le code ne fonctionne pas. FAUX, le code fonctionne : pas d'erreur de compilation, pas de plantage à l'exécution avec des messages en anglais !!! Mais le code ne fait pas ce que tu veux, c'est différent.
    En informatique, il faut faire l'effort d'utiliser les bons mots, les bonnes instructions.
    Ici, ton code fait ce que tu lui as demandé.

    Tu lui dis : if col_substrat = vrai alors.
    Le compilateur comprend quoi ? Il comprend : si le contenu de la colonne COL_SUBSTRAT est Vrai alors ...

    Pour t'aider à progresser :

    1ère piste :
    Jute avant la ligne : si col_substrat= vrai..., ajoute tout simplement une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info ( "coucou", col_substrat, col_revetement, col_detail).
    Ça ne corrigera pas ton problème, mais ça te permettra d'y voir plus clair. Et tu risques d'avoir une grosse surprise.

    2ème piste :
    Si j'ai bien compris, ce que tu veux, c'est détecter quand l'utilisateur clique sur la table, et savoir sur quelle colonne, et sur quelle ligne il a cliqué.
    Ce n'est pas le contenu de la colonne qui t'intéresse, mais l'emplacement du clic.

    C'est ça ?

    Autrement dit , ton besoin, ça concerne Clic et Table.
    Tu lances l'aide de Windev, tu tapes les mots clic et Table dans la zone de recherche, et tu regardes les résultats.
    Et le 15éme résultat devrait bien t'aider.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Je pense qu'il manque l'indice de la colonne : COL_Substrat[Indice] où Indice est le nom de ta table.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Tous d'abord je tiens à vous remercier pour vos réponse aussi rapide.

    tbc92
    Effectivement je me suis mal exprimé le code fonctionne mais n'est apparemment pas adaptée. Et oui je voudrais que quand l'utilisateur clic sur une cellule d'une colonne, j'ouvre la fenêtre correspondante à cette colonne afin de pouvoir modifier le contenu de la cellule. Cela fonctionnent sur la table entière avec la fonction "ouvre" .Là ou je bloque, c'est quand je veux ouvrir une fenêtre selon une cellule de la colonne sélectionné.

    j'ai regarder dans l'aide au 15éme résultats, ça me renvoi sur les constantes diverses. Dois-je effectuer un traitement de type trtClic ou trt sélection ?

    j'ai fait d'autre recherche sur google je trouve des codes avec la fonction TableInfoXY ?

    Voici le code que j'ai maintenant.

    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
    16
    17
    18
    19
    // Déclaration des variables
    Ligne est un entier
    Colonne est une chaîne
     
    // Récupération des indices de la cellule en cours 
    Ligne = TableInfoXY(TABLE_detail, tiNumLigne, SourisPosX(), SourisPosY())
    Colonne = TableInfoXY(TABLE_detail, tiNumColonne, SourisPosX(), SourisPosY())
     
    SI Ligne = -1 ALORS RETOUR
    SI Colonne = -1 ALORS RETOUR
     
     
    // ouverture de la fenêtre si cellule cliquer
    SI COL_Substrat[Ligne][Colonne] = 1 ALORS
    	Ouvre(FEN_ModifSubstrat)
    SINON SI COL_Revetement[Ligne][Colonne]= 1 ALORS
    	Ouvre(FEN_Ajoutdetail)
     
    FIN
    ce code me fait une erreur fatale à la 14
    Traitement de 'Sélection d'une ligne de TABLE_detail' (FEN_Principal.TABLE_detail), ligne 14, thread 0



    Michel.souris
    Quand j'essaei ta méthode, une erreur de compilation se produit dès que je clic sur une cellule.


    Vous avez appelé l'opérateur [] sur le champ TABLE_detail.
    L'indice spécifié [0] est invalide.
    Les valeurs valides sont comprises entre 1 et 2 (inclus).

    Ça parait tellement simple des fois !! là je désespère.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Avez vous remplacer Indice par TABLE_detail ?

    S'agit-il d'une table avec sélection ?
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui c'est bien une table en sélection.

    Quand je remplace [indice] par [table_détail] je n'ai plus d'erreur, mais les fenetres ne s'ouvre pas?

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    C'est normal que tu aie une erreur avec Indice si tu ne lui affecte pas de valeur (je rappelle que sur Windev on indexe à 1 et pas à 0). Je te conseille de lire la section d'aide concernant la manipulation des tables sur Windev.

    Pour savoir pourquoi les fenêtres ne s'ouvre pas, passe ton code au débug ou trace tes valeurs.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Avec ce code la fenêtre s'ouvre, mais toujours la même (fen_ModifSubstrat)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SI TABLE_detail.COL_Substrat[TABLE_detail]..Sélectionnée ALORS
    	Ouvre(FEN_ModifSubstrat)
    SINON SI TABLE_detail.COL_Revetement[TABLE_detail]..Sélectionnée ALORS
    	Ouvre(FEN_AjoutRvt)
    SINON SI TABLE_detail.COL_Detail[TABLE_detail]..Sélectionnée ALORS
    	Ouvre(FEN_Ajoutdetail)
     
     
    	FIN
    Finalement j'utilise ce code, il me trace bien mes cellules et mes colonnes, mais je n'arrive toujours pas à ouvrir les fenêtres correspondantes par clic ?

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    x,y sont des entiers
    nCol,nLigne sont des entiers
     
    //Récupération de la position de la souris
    x = PoidsFaible(CurseurPos())
    y = PoidsFort(CurseurPos())
     
    //Coordonnées dans la table en fonction de la position de la souris
    nLigne = TableInfoXY(MoiMême, tiNumLigne + tiOrigineEcran, x, y)
    nCol = TableInfoXY(MoiMême, tiNumColonne + tiOrigineEcran, x, y)
     
    //Affichage d'une trace pour voir le résultat
    Trace("Vous avez sélectionné la cellule ("+ nLigne +","+ nCol +")")
    Trace("Titre de la colonne : "+TABLE_detail[nLigne][nCol]..Titre)
    Trace("Valeur de la cellule: "+TABLE_detail[nLigne][nCol]..Valeur)
     
    //ouverture des fenetres correspondante
    SI TABLE_detail[nLigne][nCol]..Titre = "substrat"  ALORS
    	TABLE_detail.COL_Substrat = Ouvre(FEN_ModifSubstrat)
     
    SINON SI TABLE_detail[nLigne][nCol]..Titre ="revêtement" ALORS
    		TABLE_detail.COL_Detail = Ouvre(FEN_AjoutRvt)
     
    FIN

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Bonsoir,

    OUI !
    C'est la fonction qui permet de savoir où l'utilisateur a cliqué.
    Maintenant, tu as mis des paramètres qui me paraissent bien compliqués. tiOrigineEcran ???

    Tu dis que le programme n'ouvre pas la fenêtre voulue, alors simplifie ton besoin, ça va t'aider à comprendre pourquoi ton programme bogue.
    Revoie tes ambitions à la baisse ...pendant 10 minutes !

    Essaie un truc tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nligne = tableinfoXY(...)
    ncolonne = tableinfoXY(...)
    nom_colonne = tableinfoXY(...)
    info(nligne, ncolonne, nom_colonne)
    Quand l'instruction info affichera le bon numéro de ligne , et le bon numéro de colonne, et le bon nom de colonne, c'est que tu auras compris quoi mettre dans tableinfoXY().
    Et à mon avis, un copier coller de ce qu'il y a dans l'aide devrait convenir pour un besoin standard :
    http://doc.pcsoft.fr/?3074007&lang=f...ion=xxF190030e
    Tu pourras alors passer au besoin suivant : ouvrir une fenêtre.


    Sinon, autre point, tu passes par la fonction CurseurPos() et des trucs compliqués PoidsFaible() PoidsFort().
    Pourtant l'aide de la fonction CurseurPos() dit clairement :
    Pour connaître la position en cours de la souris, il est conseillé d'utiliser les fonctions SourisPosX et SourisPosY.

    Avec Windev, il y a une règle absolue : FAIRE SIMPLE.
    Et une deuxième règle absolue : lire la doc, matin, midi et soir.

    La solution à ton besoin était écrite noire sur blanc dans la doc :
    http://doc.pcsoft.fr/?3074007&lang=f...ion=xxF190030e
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour

    Effectivement ton code et bien plus simple. cela trace bien la ligne et la colonne selectionnés. Mais concernant l'ouverture des fenêtres, sa ne fonctionne toujour pas.

    Mon raisonnement est:
    SI au relachement du click gauche de la souris. (La colonne sélectioner est = au nom de la colonne) ALORS j'ouvre la fenêtre correspondante.
    mais cela ne fonctionne toujours pas ?


    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //selection dans la table
    MaLigne est un entier
    MaColonne est une chaîne
    MaLigne = TableInfoXY(TABLE_detail, tiNumLigne, SourisPosX(), SourisPosY())
    MaColonne = TableInfoXY(TABLE_detail, tiNomColonne, SourisPosX(), SourisPosY())
    Trace("Vous avez sélectionné la cellule (" + MaColonne + ", " + MaLigne + ")")
     
    //ouverture des fenêtres	
    SI TABLE_detail.COL_Substrat[MaLigne][MaColonne]=("col_substrat") ALORS
                    Ouvre(FEN_ModifSubstrat)
    SINON SI TABLE_detail.COL_Revetement[MaLigne][MaColonne]=("col_revetement") ALORS
    	Ouvre(FEN_AjoutRvt)


  11. #11
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Quand on fait du développement informatique, il ne faut pas taper des trucs au hasard sur son clavier, et rajouter de plus en plus de trucs en se disant que ça finira bien par marcher.

    Les 5 premières lignes, tu as recopié ce que j'ai posté, ok, pas d'erreur.
    La suite, 2 lignes de code, 4 erreurs, et encore une fois, du code trop compliqué
    Allez, un indice : sur la 1ère ligne, pour que ça marche, il faut que tu supprimes 38 caractères.
    Et sur la 2ème ligne, il faut que tu en supprimes 40.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    technicien immobilier
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : technicien immobilier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour tous ses conseils TBC92 effectivement ta raison je complique toujours tous ! alors que c'est si simple. sa doit être les erreur du débutant.

    enfin voila le code qui pourra servir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MaColonne est une chaîne
    MaColonne = TableInfoXY(TABLE_detail, tiNomColonne, SourisPosX(), SourisPosY())
    //Trace("Vous avez sélectionné la cellule (" + MaColonne +  ")")
     
    SI MaColonne = "COL_Substrat" ALORS
    	Ouvre(FEN_ModifSubstrat)
    SINON SI MaColonne = "COL_Revetement" ALORS
    	Ouvre(FEN_AjoutRvt)
    SINON SI MaColonne= "COL_Detail" ALORS
    	Ouvre(FEN_Ajoutdetail)
    FIN

    Merci encore

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut
    Tant qu'as faire un code plus propre et fonctionnel, tu devrais remplacer tes SI par l'instruction SELON.

    Cela sera nettement plus lisible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une div par dessus une cellule d'une table
    Par defacta dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/09/2010, 17h03
  2. sélection de plusieurs cellules dans une table
    Par cyrano_de_bergerac dans le forum C#
    Réponses: 7
    Dernier message: 26/08/2010, 14h06
  3. Réponses: 3
    Dernier message: 01/06/2009, 18h21
  4. Réponses: 21
    Dernier message: 23/06/2008, 18h35
  5. pb ouverture de fenêtre par fonction
    Par ludojojo dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/05/2008, 09h33

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