[Résolu][Calc] Réinitialiser un NumericField dans Boîte...

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
kero
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 12 août 2016 17:44

[Résolu][Calc] Réinitialiser un NumericField dans Boîte...

Message par kero »

Hello,

Je construis une boîte de dialogue dans laquelle on peut modifier des données sur une ligne de calc. Dans la boîte de dialogue, une première Combobox permet de sélectionner la ligne de la page qu'on veut modifier, ce qui provoque un appel des données, qui viennent peupler mes champs de la boite. Basiquement, jusque là ça fonctionne, mais lorsque je modifie le choix dans la Combobox, je souhaite que les champs soient réinitialisés avec les nouvelles données, ce qui, pour certains champs, implique de réinitialiser à une valeur "vide".

J'ai déjà vu comment on peut réinitialiser des champs texte et autres types de contrôle grâce à ce fil: https://forum.openoffice.org/fr/forum/v ... =8&t=43101

En revanche, après maintes recherches, je sèche totalement sur la manière de réinitialiser un champ numérique (ceux appelés NumericField). Je peux, certes, l'initialiser à 0, de la manière suivante:

Code : Tout sélectionner

Dlg.GetControl("NumericField6").SetValue(0)
Mais je ne vois pas comment le réinitialiser à "vide".

Une idée ?
Dernière modification par kero le 21 mai 2017 18:12, modifié 1 fois.
Libreoffice 5.4.5.1 (sur Archlinux)
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Calc] Réinitialiser un NumericField dans Boîte Dialogue

Message par Piaf »

Bonjour
A tester

Code : Tout sélectionner

Sub Main
Dim oDlg As Object
	DialogLibraries.LoadLibrary("Standard")
	oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
	oDlg.GetControl("NumericField1").Value = 2
	oDlg.Execute()
	oDlg.dispose()
End Sub

Sub reinitialiser(oEv as Object)
Dim oDlg as Object
	oDlg = oEv.Source.Context
	oDlg.GetControl("NumericField1").Model.Value = Empty
End Sub
A+
Pièces jointes
kero.ods
(9.2 Kio) Téléchargé 127 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
kero
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 12 août 2016 17:44

Re: [Calc] Réinitialiser un NumericField dans Boîte Dialogue

Message par kero »

Hello Piaf,

Merci pour la proposition. Ça m'a permis de régler le problème.

Au passage, deux aspects m'échappent dans ton code.
- l'argument de fonction oEv, d'où vient-il ? C'est quoi ?
- j'ai utilisé une formule plus simple que la tienne, sans "Model", ce qui donne très simplement "Dlg.GetControl("NumericField6").Value = Empty". De ce point de vue, je n'ai pas encore très bien compris ce que sont les "Model". Point à développer, sans doute.

Pour terminer, j'aurais une question un peu plus générale. Sur ce problème comme sur d'autres, je me rends compte que depuis que je tente de faire du code en Libreoffice Basic, je suis perdu quant à la documentation. J'ai trouvé, certes, plein de ressources en ligne, mais d'une part, cela concerne parfois OpenOffice et pas Libreoffice et tout ne fonctionne pas pareil; d'autre part, sur les sites de Libreoffice je ne trouve pas de ressources globales sur la programmation, les API, et ainsi de suite.

En bref: d'où devrais-je partir pour avoir des ressources plus complètes sur ce genre de problèmes ?
Libreoffice 5.4.5.1 (sur Archlinux)
kero
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 12 août 2016 17:44

Re: [Calc] Réinitialiser un NumericField dans Boîte Dialogue

Message par kero »

J'ai répondu trop vite:

Code : Tout sélectionner

Dlg.GetControl("NumericField6").Value = Empty
... ne fonctionne pas (la valeur est réglée à 0). Alors que ça fonctionne avec:

Code : Tout sélectionner

Dlg.GetControl("NumericField6").Model.Value = Empty
Pourquoi ? (Un document explicatif, je prends aussi).
Libreoffice 5.4.5.1 (sur Archlinux)
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Calc] Réinitialiser un NumericField dans Boîte Dialogue

Message par Piaf »

Re
kero a écrit :- l'argument de fonction oEv, d'où vient-il ? C'est quoi ?
Il s'agit de l'événement déclenché par l'appuie sur le bouton de la boite de dialogue.
oEv.Source renvoie sur le bouton, oEv.Source.Context sur la boite de dialogue.
kero a écrit :Pourquoi ? (Un document explicatif, je prends aussi).
Utiliser Xray
Valeur du contrôle quand il est vide ou null
ValeurducontrolVideounull.png
Valeur du model dans le même cas
ValeurModel.png
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
kero
Membre lOOyal
Membre lOOyal
Messages : 43
Inscription : 12 août 2016 17:44

Re: [Calc] Réinitialiser un NumericField dans Boîte Dialogue

Message par kero »

Ok, merci. :)

Résolu.
Libreoffice 5.4.5.1 (sur Archlinux)
Répondre