Bonjour
Suite à ce fil : [Résolu][Calc] Récupérer valeur boutons radio
Je vous propose trois façons de récupérer la valeur stockée dans la propriété Complément d’information d’un bouton radio sélectionné.
Une méthode par le groupe d'options
Une par les contrôles boutons radio
et une sur l'événement des boutons.
[Basic] Tout sur le contrôle bouton radio
Modérateur : Vilains modOOs
Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
[Basic] Tout sur le contrôle bouton radio
- Pièces jointes
-
- BoutonsRadio.odt
- (13.05 Kio) Téléchargé 681 fois
Dernière modification par Piaf le 08 août 2018 20:44, modifié 4 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Récupération du groupe d’options
Première méthode : récupération du groupe d’options.
Il s’agit d’un nom commun donné à chaque bouton radio (propriété Nom du groupe dans LibO. La propriété n’existe pas dans AOO mais la solution semble fonctionner). Elle est expliquée dans la bible dans le chapitre sur les contrôles de formulaire (le choix 1 parmi N) et dans le Basic Guide Control Element Forms in Detail pour les contrôles de formulaire mais fonctionne également pour les contrôles de dialogue.
Nous allons utiliser la méthode : getGroupByName
https://www.openoffice.org/api/docs/com ... roupByName
Le premier argument est un nom commun à tous les boutons radio, il est à déclarer en Object ou en Variant et renvoi un tableau contenant les boutons radio des différentes options.
Le second, à déclarer en Object permet de boucler sur chaque bouton.
La macro renvoie l’étiquette et la valeur du complément d’information du bouton sélectionné à la fermeture du dialogue.
Il s’agit d’un nom commun donné à chaque bouton radio (propriété Nom du groupe dans LibO. La propriété n’existe pas dans AOO mais la solution semble fonctionner). Elle est expliquée dans la bible dans le chapitre sur les contrôles de formulaire (le choix 1 parmi N) et dans le Basic Guide Control Element Forms in Detail pour les contrôles de formulaire mais fonctionne également pour les contrôles de dialogue.
Nous allons utiliser la méthode : getGroupByName
https://www.openoffice.org/api/docs/com ... roupByName
Le premier argument est un nom commun à tous les boutons radio, il est à déclarer en Object ou en Variant et renvoi un tableau contenant les boutons radio des différentes options.
Le second, à déclarer en Object permet de boucler sur chaque bouton.
Code : Tout sélectionner
Sub Group
Dim oDlg as Object, Choix() as Variant, oOption as Object
DialogLibraries.LoadLibrary("Standard")
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
If oDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
oDlg.model.getGroupByName("Eval",Choix())
For Each oOption In Choix()
If oOption.State Then
MsgBox("Vous avez selectionné l'option " & oOption.Label & Chr(13) & "Le complément d'information a pour valeur " & oOption.tag,0,"Boutons radio")
End If
Next
End If
End Sub
Dernière modification par Piaf le 08 août 2018 20:39, modifié 1 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Boucler sur chaque bouton radio
Seconde méthode, Boucler sur chaque bouton radio
On crée un tableau des noms des différents boutons radio.
Dans une boucle For Next, si le bouton est sélectionné, on récupère la valeur du complément d’information et on sort de la boucle (Une seule option pouvant être sélectionnée).
La macro renvoie l’étiquette et la valeur du complément d’information du bouton sélectionné à la fermeture du dialogue.
On crée un tableau des noms des différents boutons radio.
Dans une boucle For Next, si le bouton est sélectionné, on récupère la valeur du complément d’information et on sort de la boucle (Une seule option pouvant être sélectionnée).
Code : Tout sélectionner
Sub Control
Dim oDlg as Object, NomBouton as Variant, Choix As Object, i as Integer
NomBouton = Array("Option1","Option2","Option3","Option4")
DialogLibraries.LoadLibrary("Standard")
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
If oDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
For i = 0 To UBound(NomBouton)
Choix = oDlg.getControl(NomBouton(i)).Model
If Choix.State Then
MsgBox("Vous avez selectionné l'option " & Choix.Label & Chr(13) & "Le complément d'information a pour valeur " & Choix.tag,0,"Boutons radio")
Exit For
End If
Next i
End If
End Sub
Dernière modification par Piaf le 08 août 2018 20:40, modifié 1 fois.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Gérer les boutons radio via évènement
Troisième méthode utiliser l’événement Statut de l’élément modifié.
Si le statut passe à sélectionné, on récupère la valeur du complément d’information dans une variable qui sera récupérée à la fermeture du dialogue.
La macro RecupValeur est déclenchéé à la sélection des boutons radio. Elle enregistre la valeur voulue et affiche l’étiquette et la valeur du complément d’information du bouton sélectionné.
La macro Event renvoie la valeur enregistrée à la fermeture du dialogue.
A+
Si le statut passe à sélectionné, on récupère la valeur du complément d’information dans une variable qui sera récupérée à la fermeture du dialogue.
Code : Tout sélectionner
Dim Valeur as Integer
Sub Event
Dim oDlg as Object, Choix As Object
DialogLibraries.LoadLibrary("Standard")
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog2)
Valeur = -1
If oDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK Then
If Valeur > -1 Then
MsgBox("Une option a été choisie, la valeur de retour est " & Valeur,0,"Boutons radio")
End If
End If
End Sub
Sub RecupValeur(oEv as Object)
Dim Ctrl as Object
Ctrl = oEv.Source.Model
If Ctrl.State Then
MsgBox("Vous avez selectionné l'option " & Ctrl.Label & Chr(13) & "Le complément d'information a pour valeur " & Ctrl.tag,0,"Boutons radio")
Valeur = Ctrl.Tag
End If
End Sub
La macro Event renvoie la valeur enregistrée à la fermeture du dialogue.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
- Dude
- Grand Maître de l'OOffice
- Messages : 24167
- Inscription : 03 mars 2006 09:45
- Localisation : 127.0.0.1
- Contact :
[Basic] Fonction boutons radio groupés pour formulaire
Sous OpenOffice, les boutons radio fonctionnent automatiquement à condition qu'ils aient le même nom.
Cela pose alors un problème d'identification quand il faut intervenir ou interagir sur l'un des items.
La fonction RadioGroup permet de résoudre plusieurs cas :
Cela pose alors un problème d'identification quand il faut intervenir ou interagir sur l'un des items.
La fonction RadioGroup permet de résoudre plusieurs cas :
- Savoir quel item est coché
- Connaître l'état d'un item tel que (dé)coché ou (in)actif
- Forcer la coche sur un item
- Désactiver ou activer un item
- Modifier le libellé d'un item
- Changer la couleur de fond d'un item
- Pièces jointes
-
- GroupBox_Radios.odt
- (15.16 Kio) Téléchargé 44 fois