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 :

[Windev 25] Transfert d'informations entre application et fenêtre interne d'un Tableau de bord


Sujet :

WinDev

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut [Windev 25] Transfert d'informations entre application et fenêtre interne d'un Tableau de bord
    Bonjour à tous,

    Je ne m'en sors pas ici
    Je crée un logiciel scolaire de gestion de pensums et je chercher à afficher tous les cours données dans une certaine matière. J'utilise pour cela un champ tableau de bord et je crée une fenêtre interne par cours.

    Un cours est en fait une enveloppe et à l'intérieur se trouve le ou les enseignements.
    Par exemple, un cours d'allemand en discipline fondamentale (nom de l'enveloppe) est constitué d'une leçon hebdomadaire d'allemand 'standard' et deux leçons d'allemand en laboratoire.

    Dans ma fenêtre interne, j'ai un champ zone répétée
    Dans le cas de mon cours d'allemand, la zone répété ma fenêtre interne aura donc 2 enregistrements

    Ce que j'aimerais faire maintenant est adapter la taille de ma fenêtre interne en fonction du nombre d'enregistrements qu'elle contient.

    J'ai déjà ce traitement au sein de ma fenêtre interne qui fonctionne (adapter la taille de ma zone répétée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // compter les occurrences d'enseignements
    TableauOccurrence(MonBloc.ListeEnseignements)
    ZR_ListeEnseignements.Hauteur = TableauOccurrence(MonBloc.ListeEnseignements)*50
    Mais a priori, je ne peux adapter la taille de ma fenêtre interne seulement depuis l'extérieur de cette dernière.

    Je ne sais donc pas comment je peux transférer des informations entre mon programme principal et mes fenêtres internes.


    Nom : 2025-04-28_10-15-07.jpg
Affichages : 130
Taille : 47,3 Ko

    J'ai essayé les syntaxes suivantes mais sans succès :


    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
    		IndiceWidget est un entier = TDBAjouteWidget(TDB_DetailCoursEffectifs, FI_WidgetCoursEnseignements, MonParam.NomCours, MonParam.Bloc)
     
     
     
    //		//TDB_DetailCoursEffectifs[IndiceWidget].ChangeTailleWidget(
    //		/ Appeler directement sans passer par une variable
    //		NouvelleHauteur est un entier = TDBInfoWidget(TDB_DetailCoursEffectifs, IndiceWidget, tiFenetreInterne).RecalculeHauteur()
    //
     
    //
    //		TDBChangeTailleWidget(TDB_DetailCoursEffectifs, IndiceWidget, -1, FI_WidgetCoursEnseignements.AdaptationTaille())
    //              TDBChangeTailleWidget()
    //              FenTailleUtile(IndiceWidget, 30, 30)
     
    		TDB_DetailCoursEffectifs[IndiceWidget].Visible	= Vrai
    		TDB_DetailCoursEffectifs[IndiceWidget].Valeur	= MonParam.IndiceLocal
     
     
    //              FI_WidgetCoursEnseignements.AdaptationTaille()
    //		MaTaille est un entier = TDB_DetailCoursEffectifs[IndiceWidget].sai_taille
    //		TDB_DetailCoursEffectifs[IndiceWidget].
    //		MonFI est une variable automatique
    //		MonFI = FenêtreInterneAssociee(TDB_DetailCoursEffectifs[IndiceWidget])
    //             FenAdapteTaille(TDB_DetailCoursEffectifs[IndiceWidget])

    Je suis preneur de toute idée
    D'avance, merci à tous et excellente suite de journée

    Arnaud

  2. #2
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 529
    Par défaut
    Bonjour,

    Je suis peut-être complètement en dehors de la plaque mais je me jette à l'eau. A la fin de ton traitement d'affichage de la fenêtre principale (ou d'un bouton), le contenu des fenêtres internes est chargé. Je ferais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Code de chargement du contenu de la FI1
    // Code de chargement du contenu de la FI2
    // etc...
    Champ_FI_Enseignant..Hauteur= FI1.ZR_ListeEnseignements..Hauteur
    Champ_FI_Matière..Hauteur= FI1.ZR_Matière..Hauteur
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Je pense y être arrivé à l'aide des instructions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //
    MaFI est un Champ <- TDB_DetailCoursEffectifs[IndiceWidget]
     
    Trace(MaFI.sai_TAILLE)
    Trace(MaFI.Libellé)
    Trace(MaFI.LIB_NomCours)
     
    mataille est un entier =  MaFI.SAI_TAILLE
    TDBChangeTailleWidget(TDB_DetailCoursEffectifs, IndiceWidget,310 ,mataille,tdbUnitéPixel)
    TDBAffiche(TDB_DetailCoursEffectifs,IndiceWidget)
    Mais je me bats encore pour la taille exacte du widget car il y a beaucoup d'infos de taille

    - Taille de la FI
    - Taille du tableau de bord
    - Taille des cellules du tableau de bord
    - Marges verticales et horizontales du tableau de bord

    - Taille de base de la zone répétée
    - Hauteur de ligne ...

    Merci
    -

  4. #4
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 529
    Par défaut
    Et TDB_DetailCoursEffectifs[IndiceWidget]..hauteur = HauteurQuivaBien, ça ne fonctionne pas ?

    Dsl, j'était parti sur les champs FI et le fenêtres internes qui vont avec.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Merci quand même sympa d'avoir pris le temps ...

    Pare contre je rencontre le problème suivant et l'aide de Winde ne m'a pas beaucoup .... aidé ici :

    J'aficher donc des cours et des enseignements au sein de ces derniers.

    Le responsable des pensums peut fusionner deux enseignants de deux cours différents pour n'en faire qu'un (si par exemple le nombre d'étudiant donc chaque cours est petit)

    Je souhaitais donc mettre en place un système drag & drop que je trouvais sympa..

    J'ai fait plusieurs tentatives de dndprogrammé (MonObjet.DndSource = dndProgrammé ; MonObjet.DndCible = dndProgrammé) sur :
    - ma fenêtre interne,
    - ma zone répétée
    - La liste de classe au sein d'une zone répétée (carré rose-violet)

    Nom : 2025-04-28_21-22-29.jpg
Affichages : 100
Taille : 141,9 Ko

    J'arrive bien a attraper le début du glisser mais impossible d'activer le lâcher... le survol par contre fonctionne
    J'ai essayé d'autres destination en dehors de mon champ tableau de bord mais rien n'y fait ; le survol fonctionne mais le lâcher semble interdit.

    Y-aurait-il une grosse limitation de ce procédé pour les fenêtres internes dans un champ tableau de bord ?
    Je n'ai rien trouvé dans la doc ...
    Merci à tous
    Arnaud

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2023
    Messages : 99
    Par défaut
    Bonjour,

    avez-vous programmé le DNDAccepte ?

    la réponse est peut-être sur cette vidéo :


    Cdlt

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Bonsoir DevOcc

    Merci pour la question ; oui je l'avais programmé mais dans le code principal de ma fenêtre interne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCÉDURE MaFenêtre(MonBloc est un  STBlocCours)
    FI_WidgetCoursEnseignements.DndCible = dndProgrammé
     
    DnDEvénement(LacherEnseignement, FI_WidgetCoursEnseignements, dndLâcher)
     
    ...
     
    PROCÉDURE LacherEnseignement()
     
    DnDAccepte(dndCopier)
    Trace ("Lacher i")

    Chose qui se passe également : lorsque je débute le glisser, tous les éléments que j'avais programmé pour un dndlâcher s'affichent avec le symbole :

    Nom : OIP.jpeg
Affichages : 97
Taille : 4,6 Ko

    Merci


    PS. Bravo pour vos vidéos qui m'ont déjà bien aidé

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 201
    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 201
    Par défaut
    Pour l'instruction dndEvenement, dans tous les exemples que j'ai vus dans l'aide, la procédure était entre guillemets.

    Et quand j'ai utilisé le DragDrop, j'ai utilisé évidemment ce DndEvenement, mais je n'ai jamais utilisé le DnDaccepte.

    Autre possibilité : tu as un champ zone répétée. Et pour une zone répétée, on peut programmer le DragDrop en mode '''simplifié''' (cf le paragraphe Drag and Drop mode simplifié dans cette page ).Peut-être que dans tes essais, tu as utilisé cette possibilité là, et c'est ce mode 'simplifié' qui prend le contrôle.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Merci pour l'information.

    J'ai à peine avancé .. c'est-à-dire que j'arrive 'attraper' le début d'événement glisser ; que le curseur de ma souris affiche bien le [+] lorsque j'arrive sur une autre fenêtre interne mais impossible d'attraper l'événement 'lâcher'. Je suppose que cela est dû au fait que je travaille avec des fenêtres interne sur un champ tableau de bord.
    Etant donné qu'une fenêtre interne ne peut être jointe qu'au travers de son index, j'ai l'impression que la fenêtre interne sur laquelle arrive la souris 'ne sait pas trop' que c'est elle qui est concernée étant donné qu'il y a plusieurs jumelles ; je ne sais pas trop comment expliquer cela
    ..

  10. #10
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 529
    Par défaut
    Bonjour,

    Est-ce que tu as bien défini un des champs comme étant cible (onglet détail d'un champ de saisie par ex) et voir ce que ça donne ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Bonsoir Frenchsting et merci pour la proposition,

    oui j'ai essayé sur plusieurs champs différent soit par la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FI_WidgetCoursEnseignements.DndCible = dndProgrammé
    soit en définissant directement l'option dans les propriétés du champ.


    ; le seul qui semble réagir à un lâcher étant le champ tableau de bord. Tous les autres (fenêtres interne dans le tableau de bord, tableaux et listes en dehors du tableau de bord) n'affichent que le symbole d'interdiction

    Merci

  12. #12
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 529
    Par défaut
    J'ai vu que dans la ZR, il y a une image. Est-ce qu'elle "réagit" au DnD ?

    Si cela fonctionne, ça pourrait être une idée que de mettre une icône spécifique comma cible dans la ZR pour "forcer" l'utilisateur à l'utiliser.

    Sinon, une autre idée est de tester l'évènement du lâcher de clic gauche. Avec le ZoneRépétéeInfoXY, tu pourrais trouver la ligne qui est concernée. Bon, à mon avis, il y a pas mal de tests à faire pour valider tout çà.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 177
    Par défaut
    Bonjour Frenchsting et merci pour la proposition.
    Je n'y avais pas pensé...

    Par curiosité, je vais essayer mais je n'y crois pas trop..

    Je pense effectivement que la problématique est qu'une fenêtre interne ne peut être jointe depuis l'extérieur qu'avec une indirection et son indice (qu'elle ne connaît pas en plus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaFI est un Champ <- TDB_DetailCoursEffectifs[IndiceWidget]
    et que c'est cela qui empêche un lâcher.

    J'ai donc choisi la solution suivante :
    A la création de la FI, je récupérer son indice. Je le stocke ensuite dans la FI dans un champ caché.
    Au double click sur un enseignement, je remplis un tableau situé à l'extérieur de la FI en indiquant l'ID de l'enseignement et l'indice de la FI.

    Cela me permet de mettre à jour les données dans mes tables et de savoir quelle FI je dois recalculer et afficher..
    Merci à toi

Discussions similaires

  1. Transfert d'information entre fenetres
    Par cyberkamikaz dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 08/12/2012, 23h23
  2. Réponses: 0
    Dernier message: 08/04/2011, 22h12
  3. Transfert de donnée entre WP7 et application PC
    Par jerem3000 dans le forum Windows Phone
    Réponses: 19
    Dernier message: 07/03/2011, 18h40
  4. Transfert de structure entre 2 applications
    Par OttisToole dans le forum Threads & Processus
    Réponses: 12
    Dernier message: 04/08/2009, 23h15
  5. transfert d'information entre des fichiers
    Par Amallric dans le forum Langage
    Réponses: 10
    Dernier message: 21/09/2006, 08h50

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