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 :

Cloner un champ dans un onglet dynamique


Sujet :

WinDev

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Cloner un champ dans un onglet dynamique
    Bonjour,

    Ma question tient dans le titre.
    J'ai un onglet dynamique, lui même situé dans le superchamp d'une fenêtre modèle.
    Je voudrais clôner un champ dedans.
    Pour l'instant le champ à clôner est dans le même onglet.

    J'ai écrit ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x est une chaîne
    y est une chaîne
    x = sc_Conteneur.pg_Onglet[1].mod_ParamTableauChiffre
    y = ChampAlias(sc_Conteneur.pg_Onglet[1])
    ChampClone(x, y + ".xx1", 200, 200)
    J'obtiens un message d'erreur "Il ne faut pas utiliser un indice mais un alias"
    Je suppose que c'est au niveau de la cible qu'il faudrait remplacer sc_Conteneur.pg_Onglet[1] par un alias mais je ne vois pas comment.

    Merci de vos conseils.

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Je ne comprend pourquoi tu utilises cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = ChampAlias(sc_Conteneur.pg_Onglet[1])
    as tu essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChampClone(mod_ParamTableauChiffre, mod_ParamTableauChiffre + "_1", 200, 200)
    Par défaut le champ cloné doit être sur le même onglet et si tu veux changer l'onglet de destination tu peux le faire par programmation, voir aide en ligne http://doc.pcsoft.fr/fr-FR/?1013193

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci pour votre aide

    J'avais compris que, pour créer un objet dans un onglet dynamique il fallait préfixer le nom de l'objet par le nom de l'onglet.
    J'ai fait ceci. Le champ Image (im_Toile) utilisé dans mon code est une sorte de toile de fond sur laquelle viennent se ranger les objets créés dynamiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LC_AliasOnglet est une chaîne
    LC_NomChamp    est une chaîne
    LC_ChampImage  est un Champ
     
    	GN_NbObjet = GN_NbObjet + 1
    	LC_ChampImage <- VoletDuChamp(im_Toile)
    	LC_AliasOnglet = LC_ChampImage..Alias
    	LC_NomChamp    = LC_AliasOnglet + ".TableauChiffre" + GN_NbObjet
    	ChampClone(mod_ParamTableauChiffre, LC_NomChamp, im_Toile..X, im_Toile..Y+15)
    	ChampVisible(LC_NomChamp)
    Cela fonctionne mais ça me semble bien compliqué pour un besoin relativement simple.
    Maintenant je vais faire en sorte que l'utilisateur puisse déplacer son objet.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    Bonjour,

    Voici un code que j'ai trouver sur Internet pour déplacer des champs..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Bouton gauche enfoncé sur ton champs 
     
    / Bouton gauche enfoncé
    gsChampADeplacer = "SC_Postit_"+gnNuméroChampEncours
    gbEnMouvement = Vrai
    ThreadExécute(MoiMême..Nom,threadNormal,"SourisBouge") // On lance un thread qui gérera le déplacement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Bouton gauche relaché
    ThreadArrête(MoiMême..Nom,5) // On stop le thread
    gbEnMouvement = Faux
     
    gnPositionX = {"SC_Postit_"+gnNuméroChampEncours}..X
    gnPositionY = {"SC_Postit_"+gnNuméroChampEncours}..Y


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    PROCEDURE SourisBouge()
     
    Res, PosX, PosY sont des entiers // Pour récupérer les coordonnées de la souris
     
    xMini, xMaxi, yMini, yMaxi sont des entiers
     
    // On peut définir des bornes à ne pas dépasser,
    // pour éviter que l'objet soit déplacé en dehors de l'écran...
    xMini = 100
    xMaxi = FEN_Board_PostIt..Largeur-230
    yMini = 7
    yMaxi = FEN_Board_PostIt..Hauteur - 230
     
     
     
    BOUCLE
    	Res = CurseurPos(cpEcran)
    	SI Res <> -1 ALORS
     
    		// on récupère la position de la souris
    		// (NomFenetre à remplacer par le nom de la fenetre...)
    		PosX = PoidsFaible(Res) - FEN_Board_PostIt..X 
    		PosY = PoidsFort(Res) - FEN_Board_PostIt..Y
     
    		// on vérifie que l'on ne sort pas de la zone, sinon on bloque
    		SI PosX < xMini ALORS PosX = xMini
    		SI PosX > xMaxi ALORS PosX = xMaxi
    		SI PosY < yMini ALORS PosY = yMini
    		SI PosY > yMaxi ALORS PosY = yMaxi
     
    		// On déplace
    		{gsChampADeplacer,indChamp}..X = PosX - xMini
    		{gsChampADeplacer,indChamp}..Y = PosY - yMini
    	FIN
     
    	// Quand on relachera le bouton, enMouvement passera à Faux et on sortira de la boucle
    	SI PAS gbEnMouvement ALORS SORTIR 
    FIN


    J'ai fait une petite fenêtre utilisant ce principe et le champClone avec mémorisation des emplacements et contenus, par contre ce n'est pas dans des onglet dynamiques..



    FEN_Board_PostIt.wdw

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci.
    J'avais vu un exemple de ce genre mais j'ai peur que l'utilisateur n'arrive pas à faire des alignements corrects. Personnellement quand je dessine un écran je commence à ranger mes objets à la souris mais je vérifie les Top et les Left avec les valeurs de propriétés.
    Donc dans un premier temps je vais utiliser une mini fenêtre avec l'affichage des coordonnées et des tailles.

    Ma question est plutôt de savoir où ranger le code.
    Je viens du monde Delphi. En Delphi (en VS aussi d'ailleurs) si un objet est un panel ou l'onglet d'un classeur son parent est le panel ou l'onglet du classeur. En WinDev son parent est la fenêtre elle-même. Si on utilise des fenêtres incluses le parent n'est pas la fenêtre incluse mais la fenêtre principale. Ca me déroute un peu...
    Je travaille là dessus demain en fin de journée.

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Juste pour info, si je me rappelle dans les nouveautés de la 21, il y a possibilité que l'utilisateur repositionne les champs d'une fenêtre.

  7. #7
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    C est exacte lo2, c est la nouveauté 015.
    Cela repond bien a la problématique posée

    Bon dev :ccool;
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Par défaut le champ cloné doit être sur le même onglet et si tu veux changer l'onglet de destination tu peux le faire par programmation, voir aide en ligne http://doc.pcsoft.fr/fr-FR/?1013193

    Bon dev
    Je viens d'essayer.
    Ce que j'avais fait fonctionnait en interactif mais impossible de le faire fonctionner au moment du chargement de la fenêtre.
    Là je plante carrément WinDev.

  9. #9
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Points : 204
    Points
    204
    Par défaut
    peut être que l'onglet ou le super champ dans lequel tu fais la création n'est pas encore initialisé enfin pas entièrement.

  10. #10
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Peut être vérifier l'odre d'initialisation de la fenêtre : Menu ->Fenêtre -> Editer l'ordre de navigation.

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  11. #11
    Membre habitué
    Profil pro
    Chef de projet Technique
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet Technique

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 125
    Points
    125
    Par défaut
    as tu regarde du coté des champ tableau de bord? ils intègrent directement une fonctionnalité permettant à l'utilisateur de réorganiser le contenu. http://doc.pcsoft.fr/fr-FR/?10000310...ableau_de_bord

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Bonjour,

    Finalement on a modifié complétement les fonctionnalités que l'on avait prévues et on a revu nettement à la baisse.
    On s'est limité à un classeur à onglet avec 2 pages seulement et sans possibilité d'ajouter des pages dynamiquement.
    Les enrichissements se font via des fenêtres Popup.

    J'ai refait l'écran en totalité. Cette fois j'ai réussi à placer un modèle de champ dans un onglet et il se clône dans le même onglet.

    Au passage j'ai trouvé un moyen radical de planter WinDev (du moins sur 2 de nos PC) : placer un champ tableur dans un modèle de champ.

    Merci encore de votre aide.

Discussions similaires

  1. Regroupement champs dans tableau croisé dynamique
    Par Boubas1 dans le forum Excel
    Réponses: 4
    Dernier message: 02/01/2009, 20h39
  2. Référencier un champs dans un onglet
    Par bsalim dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/03/2008, 21h40
  3. Compter le nombre de champs dans un formulaire dynamique.
    Par rpgmax dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/02/2008, 15h12
  4. mettre une valeur a un champs dans un onglet..
    Par Fritzoune dans le forum Access
    Réponses: 2
    Dernier message: 03/03/2006, 14h33
  5. Réponses: 5
    Dernier message: 25/07/2005, 14h03

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