[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 !

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

Messagepar kero » 21 Mai 2017 12:29

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   AgrandirRéduire
Dlg.GetControl("NumericField6").SetValue(0)


Mais je ne vois pas comment le réinitialiser à "vide".

Une idée ?
Dernière édition par kero le 21 Mai 2017 17:12, édité 1 fois.
Libreoffice 5.4.5.1 (sur Archlinux)
kero
Membre lOOyal
Membre lOOyal
 
Message(s) : 43
Inscrit le : 12 Août 2016 16:44

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

Messagepar Piaf » 21 Mai 2017 13:06

Bonjour
A tester
Code : Tout sélectionner   AgrandirRéduire
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é 57 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar kero » 21 Mai 2017 14:38

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
 
Message(s) : 43
Inscrit le : 12 Août 2016 16:44

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

Messagepar kero » 21 Mai 2017 14:53

J'ai répondu trop vite:
Code : Tout sélectionner   AgrandirRéduire
Dlg.GetControl("NumericField6").Value = Empty


... ne fonctionne pas (la valeur est réglée à 0). Alors que ça fonctionne avec:

Code : Tout sélectionner   AgrandirRéduire
Dlg.GetControl("NumericField6").Model.Value = Empty


Pourquoi ? (Un document explicatif, je prends aussi).
Libreoffice 5.4.5.1 (sur Archlinux)
kero
Membre lOOyal
Membre lOOyal
 
Message(s) : 43
Inscrit le : 12 Août 2016 16:44

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

Messagepar Piaf » 21 Mai 2017 17:08

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
Piaf
GourOOu
GourOOu
 
Message(s) : 5622
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar kero » 21 Mai 2017 17:12

Ok, merci. :)

Résolu.
Libreoffice 5.4.5.1 (sur Archlinux)
kero
Membre lOOyal
Membre lOOyal
 
Message(s) : 43
Inscrit le : 12 Août 2016 16:44


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)