Page 1 sur 1

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

MessagePublié: 21 Mai 2017 12:29
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   AgrandirRéduire
Dlg.GetControl("NumericField6").SetValue(0)


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

Une idée ?

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

MessagePublié: 21 Mai 2017 13:06
par Piaf
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+

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

MessagePublié: 21 Mai 2017 14:38
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 ?

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

MessagePublié: 21 Mai 2017 14:53
par kero
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).

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

MessagePublié: 21 Mai 2017 17:08
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+

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

MessagePublié: 21 Mai 2017 17:12
par kero
Ok, merci. :)

Résolu.