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

OpenOffice & LibreOffice Discussion :

Boite de dialogue non modale [LibreOffice]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut Boite de dialogue non modale
    Bonjour à tous ,

    Je commence tout juste à programmer sous Basic LibreOffice, et je galère déjà

    Le besoin :
    une boite de dialogue permettant entre autre de récupérer l'adresse d'une cellule dans la feuille active et de renseigner avec un text Field

    Donc , j'ai procédé comme suit:
    Un bouton sur la feuille qui affiche la boite de dialogue 01 ( contient des text Field pour renseigner des valeurs nécessaires au traitement que je veux faire par la suite ) + un bouton dont la fonction est d'afficher une seconde boite de dialogue pour le remplissage du text Field relatif à l'adresse de la cellule pointée sur la feuille , le même mécanisme de remplissage des plages de données dans l'étape 2 de l'insertion d'un diagramme dans une feuille calc

    j'utilise la macro suivante :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    REM  *****  BASIC  *****
    Option Explicit
     
    dim exitOK, PysBibli as object
    Global Continuer as boolean
    Global ListenerTop as object, Dialogue as object
     
    Sub PysLancer
    dim PysDialogue as object, Dlg as object
    dim oTxt As Object
    dim compteur As Integer
    dim nCell As String
    dim ExoClasseur as Object, ExoFeuille as Object
    exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
     
    DialogLibraries.Loadlibrary("Standard")
    PysBibli = DialogLibraries.GetByName("Standard")
     
    PysDialogue = PysBibli.GetByName("Dialog1")
     
    Dlg = CreateUnoDialog(PysDialogue)
     
      if Dlg.Execute = exitOK then
        ' compteur : valeur de départ du compteur 
         compteur = Dlg.GetControl("TextField1").Text
         '
         ExoClasseur = thisComponent
         ExoFeuille=ExoClasseur.Sheets.getByName("Matrice Complétude")
           Dim I 
           Dim adress As String
           For I = 1085 To 1090
           adress="A"&I
           ExoFeuille.getCellRangeByName(adress).string="SCN-" & compteur  & "-" & ExoFeuille.getCellRangeByName(adress).string
           compteur = compteur+1
           Next I 
     
      Else
        MsgBox("Aucun séquensage n'a été exécuté", 64, "Annulation")
      Endif
      End Sub
     
    Sub AppelBoite(PysNomBoite)
    dim PysDialogue as object, Dlg as object
    PysDialogue = PysBibli.GetByName("Dialog2")
    Dlg = CreateUnoDialog(PysDialogue) 
    'Dlg.Execute
    ListenerTop = createUnoListener("TopListen_", "com.sun.star.awt.XTopWindowListener")
    Dlg.addTopWindowlistener(ListenerTop)
    Continuer = True
     
    while Continuer
       wait 20
       Dlg.setVisible(true)
    wend
     
    end sub
    Mais ça ne marche pas !!!!!!!

    ma première boite de dialogue apparait bien :
    Nom : Capture1.PNG
Affichages : 1656
Taille : 10,8 Ko

    la seconde apparait avec des erreurs :
    Nom : Capture2.PNG
Affichages : 1700
Taille : 20,5 Ko

    Alors que le résultat attendu en cliquant sur le bouton de la boite de dialogue 1 est la disparition de celle ci et l'apparition de la boite de dialog 2 qui elle doit permettre de sélectionner une cellule de la feuille ( donc non modal ????)

    j'espère que j'ai été claire !!!!!!

    Merci de me sortir de ce pétrin !!!

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,

    pas tout compris, je rebondis donc juste sur la dernière ligne (parce qu'en fait, tout ce qui précède on s'en fout, tu vas voir pourquoi) :
    Citation Envoyé par masoum Voir le message
    [...] le résultat attendu en cliquant sur le bouton de la boite de dialogue 1 est la disparition de celle-ci et l'apparition de la boite de dialog 2 qui [...]
    Ce résultat attendu est impossible, particulièrement avec les boîtes de dialogue modales :
    1- tu fais afficher ta boîte 1
    2- tu cliques sur un bouton de celle-ci pour faire afficher une autre boîte de dialogue --> cette procédure est une procédure-fille de la procédure mère, l'exécution en cours de la boîte 1.
    3- tant que tu ne fermes pas la boîte 2, cette procédure-fille ne sera pas fermée et le programme ne pourra pas "remonter" à la procédure appelante qui a déclenché cet affichage.

    C'est clair ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut
    Merci de ta réponse !

    Oui Oui c'est clair ! du coup quelle est la solution ? je supprime la seconde fenêtre ? et je veux laisser la première en non modal du coup pour pouvoir sélectionner une cellule sur la feuille ! la sélection a pour effet : reproduction de l'adresse de la cellule sélectionnée dans le text field !

    je n'y arrive paaaaaaaaaaas

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par masoum Voir le message
    je n'y arrive paaaaaaaaaaas
    ... n'est pas un message d'erreur valide...

    Et ici les boules de cristal sont en maintenance.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut
    Désolée !

    Bonjour ,

    Tout d’abord merci de m’avoir répondu

    Ensuite je vais essayer d’expliquer le besoin plus clairement :

    Je dispose d’un fichier calc : une matrice de complétude pour les scénarios de test sur un livrable , les scénarios pour des raisons internes à l’entreprise sont saisis sans numéro d’indentification selon un format général :
    “Fonctionnalité principale – sous fonction “ exemple : “titularisarion-procédure “ hors notre plan de test spécifie tout dernièrement un format d’identification des scénarios à savoir : “SCN-N°sur 4 chiffres-Fonctionnalité principale -sous fonction “ donc le scénario est repris en : “SCN-0001-titularisarion-procédure”
    ma macro opère les changements de réécriture des noms de scénarios , par contre il y a des paramètres car les fusions de différentes versions de cette matrice provenant de différents acteurs à différents moments impose que je dois commencer le renommage à partir d’un numéro de compteur et d’un numéro de ligne , exemple :
    à partir de la ligne A450 , introduire le numéro de compteur : 501 et incrémenter ce numéro jusqu’au dernier scénario saisi .
    ma boite de dialogue a pour but de renseigner ces deux paramètres

    numéro de compteur et adresse cellule (ligne) a partir de laquelle le renommage commence

    le numéro est saisi à la main, et l’adresse de la cellule doit être sélectionnée sur la feuille directement !

    c’est ce que je n’arrive pas à faire justement !

    le mécanisme qui s’en rapproche le plus est celui du remplissage des données lors d’une insertion de graphique dans un calc (étape 2)


    je transmets du coup mon fichier calc épuré avec quelques scénarios car en réalité il y a plus de 2000 lignes , l’adresse de départ pour le renommage des scénarios est codé en dur pour l’instant (et celui d’arrivée aussi )

    ensuite , il y aura des particularités dans le traitement des noms de scénarios que je verrai plus tard !!

    Pour l’instant j’ai juste besoin de pouvoir sélectionner une cellule sur la feuille pour récupérer son adresse sur le text field du dialog
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par masoum Voir le message
    Désolée !

    Bonjour ,

    Tout d’abord merci de m’avoir répondu

    Ensuite je vais essayer d’expliquer le besoin plus clairement :

    Je dispose d’un fichier calc : une matrice de complétude pour les scénarios de test sur un livrable , les scénarios pour des raisons internes à l’entreprise sont saisis sans numéro d’indentification selon un format général :
    “Fonctionnalité principale – sous fonction “ exemple : “titularisarion-procédure “ hors notre plan de test spécifie tout dernièrement un format d’identification des scénarios à savoir : “SCN-N°sur 4 chiffres-Fonctionnalité principale -sous fonction “ donc le scénario est repris en : “SCN-0001-titularisarion-procédure”
    ma macro opère les changements de réécriture des noms de scénarios , par contre il y a des paramètres car les fusions de différentes versions de cette matrice provenant de différents acteurs à différents moments impose que je dois commencer le renommage à partir d’un numéro de compteur et d’un numéro de ligne , exemple :
    à partir de la ligne A450 , introduire le numéro de compteur : 501 et incrémenter ce numéro jusqu’au dernier scénario saisi .
    ma boite de dialogue a pour but de renseigner ces deux paramètres

    numéro de compteur et adresse cellule (ligne) a partir de laquelle le renommage commence

    le numéro est saisi à la main, et l’adresse de la cellule doit être sélectionnée sur la feuille directement !

    c’est ce que je n’arrive pas à faire justement !

    le mécanisme qui s’en rapproche le plus est celui du remplissage des données lors d’une insertion de graphique dans un calc (étape 2)


    je transmets du coup mon fichier calc épuré avec quelques scénarios car en réalité il y a plus de 2000 lignes , l’adresse de départ pour le renommage des scénarios est codé en dur pour l’instant (et celui d’arrivée aussi )

    ensuite , il y aura des particularités dans le traitement des noms de scénarios que je verrai plus tard !!

    Pour l’instant j’ai juste besoin de pouvoir sélectionner une cellule sur la feuille pour récupérer son adresse sur le text field du dialog
    Un gros problème est une somme de petits problèmes, alors par pitié, une étape à la fois !
    En l'espèce, ce que tu veux, c'est lancer une fiche, puis sélectionner une cellule dans ta feuille Calc, puis afficher les coordonnées de cette cellule dans ta fiche. C'est ça ?
    (parce qu'avec tes 15 lignes de blablas tu nous embrouilles les neurones ! Toujours se rappeler que celui qui répond au problème n'est pas dans la tête de celui ou celle qui expose le problème...)

    EDIT :
    Fait à l'arrache : une boîte de dialogue comme la tienne, et ce code :
    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
    Dim oDialog1 As Object
     
    Sub StartDialog1()
        BasicLibraries.LoadLibrary("Tools")
        oDialog1 = LoadDialog("Standard", "Dialog1")
        oDialog1.Execute()
    End Sub
     
    Sub readDialog1()
        Dim macellule as object
        oT1 = oDialog1.GetControl("TextField1")
        macellule = ThisComponent.CurrentSelection
        oT1.setText(macellule.String)
    End Sub
     
    sub main
        StartDialog1
        readDialog1
    end sub
    Tu sélectionnes une cellule dans Calc, tu cliques sur le bouton de la BdD et tu verras que le texte de Calc s'affiche dans le TextField.

    À voir : http://vviale.developpez.com/tutorie...-tableur-calc/
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut
    Merci pour ce bel effort !

    Au risque de froisser un certain égo que tu laisses largement transparaitre entre les lignes de ta réponse , et me doutant que c'est du temps pris sur le tien et que rien ne t'oblige à m'aider , je me permets de te signaler que j'avais besoin de récupérer l'adresse de la cellule et non sa valeur ! de plus cette solution ne répond pas à mon besoin puisque je n'arrive pas sélectionner ma cellule une fois que le dialog est affiché , et combien même , je n'arrive pas à changer de sélection de cellule ! la feuille sous la boite de dialog est figée ! d'où ma question sur la possibilité de travailler sur un dialog non modal !

    J'ai commencer les macros basic y a 24 heures ! j'ai peut être trop détaillé le post mais apparemment pas assez pour qu'on me comprenne !

    Et je ne cherche pas de solution servie sur un plat mais une orientation qui va dans le sens de mon besoin !

    Je veux reproduire une sélection de plages (pour mon cas une seule cellule ) à partir d'un dialog selon des étapes simples :
    1-clic sur un bouton de la feuille de calc
    2-affichage boite de paramétrage qui permet de saisir un numéro de compteur dans un premier text field
    3- un second text field est sensé contenir l'adresse d'une cellule de la feuille active choisie en la pointant avec la souris (le bouton sur le dialog est sensé valider la sélection)
    4-finir par cliquer sur le bouton OK (Appliquer) pour faire le traitement final --> fermeture du dialog

    c'est pour ça que j'ai fais allusion à une insertion de diagramme car l'idée est exactement la même (dans les étapes)


    Merci

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par masoum Voir le message
    [...] je me permets de te signaler que j'avais besoin de récupérer l'adresse de la cellule et non sa valeur !
    et plus précisément, dans cette page, http://vviale.developpez.com/tutorie...r-calc/#LV-A-3


    Citation Envoyé par masoum Voir le message
    [...] je n'arrive pas sélectionner ma cellule une fois que le dialog est affiché, et combien même, je n'arrive pas à changer de sélection de cellule ! la feuille sous la boite de dialog est figée !
    quand bien même, en bon français.
    J'ai bien compris la demande et le code que j'ai posté fonctionne comme tu l'attends... Sinon je ne l'aurais pas posté.
    Je suis parti de ce tuto : http://www.debugpoint.com/2015/01/wo...-macro-part-1/
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 06/05/2008, 17h53
  2. Boite de dialogue non modale
    Par Orc_Fayeh dans le forum MFC
    Réponses: 4
    Dernier message: 19/02/2007, 22h25
  3. Afficher/Cacher Boite de dialogue non modale
    Par coco21 dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2007, 10h08
  4. Boite de dialogue non modale
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 25/12/2006, 21h46
  5. dimension boite de dialogue non modale
    Par afan dans le forum MFC
    Réponses: 25
    Dernier message: 21/10/2004, 13h35

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