Bonjour,
J'ai une boîte de dialogue qui contient un groupe de 2 boutons radio configurés comme suit :
Nom : rbSuivi et rbBilan / Groupe : Type
Le basculement s'effectue correctement, seulement il m'est impossible de récupérer l'état correct des boutons.
Avec Xray, la propriété State de l'objet (que je prenne oDlg.getControl("rbSuivi").State ou oDlg.getControl("rbSuivi").Model.State) renvoi simplement l'état initial du bouton tel qu'il est défini dans la boîte de dialogue (Contrôle État à "Sélectionné" ==> True, à "Non sélectionné" ==> False).
En bref, quelque soit l'état actif ou non du bouton, j'ai toujours la même valeur qui est celle du dialogue initial.
J'ai bien un contournement possible qui est de faire une macro qui positionnerait une valeur dans un champ caché dans la boîte sur action du bouton en récupérant le nom du contrôle à l'origine de l'appel, mais c'est un workaround, pas un code correct.
Est-ce que j'ai loupé quelque chose, ou est-ce un bug ?
Rien trouvé de probant sur le forum sur ce point, et les autres exemples sur google font référence à State ce qui semble normal.
Merci de vos lumières.
Jacques
[Résolu][Basic] Etat d'un bouton radio dans un dialogue
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
JacquesF
- Membre lOOyal

- Messages : 37
- Inscription : 08 oct. 2012 12:40
[Résolu][Basic] Etat d'un bouton radio dans un dialogue
Dernière modification par JacquesF le 21 oct. 2012 09:56, modifié 1 fois.
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
-
alhazred
- ManitOOu

- Messages : 3028
- Inscription : 30 avr. 2011 23:08
- Localisation : Casablanca (Maroc)
Re: [Basic] Etat d'un bouton radio dans un dialogue
Bonsoir,
À quel endroit fais-tu l'appel à XRay ? ça aiderait de voir ton code.
À quel endroit fais-tu l'appel à XRay ? ça aiderait de voir ton code.
Utiliser un nom de groupe semble donc bien inutile.L'aide a écrit :Bouton radio
Ajoute un bouton permettant à l'utilisateur de sélectionner un certain nombre d'options. Les boutons radio groupés doivent avoir des index tabulation consécutifs. Ils sont généralement encerclés par une zone de groupe. Si vous avez deux groupes de boutons radio, vous devez insérer un index tabulation entre les index tabulation des deux groupes du cadre de groupe.
À bientôt
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.
Et la sauvegarde incrémentée, c'est sympa !
-
JacquesF
- Membre lOOyal

- Messages : 37
- Inscription : 08 oct. 2012 12:40
Re: [Basic] Etat d'un bouton radio dans un dialogue
Bonsoir,
Merci de la réponse.
Pour les boutons, ils sont bien dans la même zone de groupe, leur fonctionnement est correct, le basculement de l'un à l'autre est le même.
C'est l'évènement "Action sur le bouton modifié" qui appelle une macro, dans laquelle je prends maintenant en paramètre l’élément source pour savoir quel est le bouton actionné (et donc actif).
En fait, il suffit d'appeler xray avec le nom de la boîte de dialogue ou du bouton à vérifier si on ne veut pas se promener dans les objets (ou utiliser getcontrol autrement). Quelque soit l'état du bouton que je regarde, il a toujours la propriété State égale à celle de sa création, elle ne correspond pas à son status courant.
Mais ta remarque sur le moment où j'appelle la macro m'a fait penser à une autre chose, la déclaration de la variable liée à CreateUnoDialog.
Je l'ai passé en global, et à priori je peux inteagir maintenant sur les éléments de la boîte de dialogue.
Je progresse donc... merci de l'idée.
Je cherche encore et je mettrai le pourquoi du comment ici dès que j'aurai trouvé.
Jacques
Merci de la réponse.
Pour les boutons, ils sont bien dans la même zone de groupe, leur fonctionnement est correct, le basculement de l'un à l'autre est le même.
C'est l'évènement "Action sur le bouton modifié" qui appelle une macro, dans laquelle je prends maintenant en paramètre l’élément source pour savoir quel est le bouton actionné (et donc actif).
En fait, il suffit d'appeler xray avec le nom de la boîte de dialogue ou du bouton à vérifier si on ne veut pas se promener dans les objets (ou utiliser getcontrol autrement). Quelque soit l'état du bouton que je regarde, il a toujours la propriété State égale à celle de sa création, elle ne correspond pas à son status courant.
Mais ta remarque sur le moment où j'appelle la macro m'a fait penser à une autre chose, la déclaration de la variable liée à CreateUnoDialog.
Je l'ai passé en global, et à priori je peux inteagir maintenant sur les éléments de la boîte de dialogue.
Je progresse donc... merci de l'idée.
Je cherche encore et je mettrai le pourquoi du comment ici dès que j'aurai trouvé.
Jacques
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)
-
Churay
- ManitOOu

- Messages : 2668
- Inscription : 30 avr. 2009 04:54
- Localisation : CATALUNYA
Re: [Basic] Etat d'un bouton radio dans un dialogue
Bonjour
Si tu joins un fichier avec ta boîte de dialogue et le code qui récupère (mal) les valeurs, les volontaires y verront plus clair...
Si tu joins un fichier avec ta boîte de dialogue et le code qui récupère (mal) les valeurs, les volontaires y verront plus clair...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
-
JacquesF
- Membre lOOyal

- Messages : 37
- Inscription : 08 oct. 2012 12:40
Re: [Basic] Etat d'un bouton radio dans un dialogue
Merci, mais comme je le disais plus haut, c'est surtout une piste dont j'avais besoin.
Le code n'est pas encore clair...
Mis le problème venait bien du fait que n'ayant pas déclaré le dialogue comme global, j'accédais à une nouvelle instance de l'objet dans la routine appelée.
Donc, pour lire correctement les états des contrôles d'un dialogue depuis une autre routine, il faut un objet global.
Je asse le sujet en résolu
Merci
Jacques
Le code n'est pas encore clair...
Mis le problème venait bien du fait que n'ayant pas déclaré le dialogue comme global, j'accédais à une nouvelle instance de l'objet dans la routine appelée.
Donc, pour lire correctement les états des contrôles d'un dialogue depuis une autre routine, il faut un objet global.
Je asse le sujet en résolu
Merci
Jacques
LibreOffice 5.4.7.2 Linux (et parfois Windows 7)