Erreur d'accès DateField dans une Boîte Dialogue
Bonjour à tous,
J'utilise LibreOffice 6.4.3.2
Je souhaite utiliser un champ DateField déroulant (calendrier) dans une boite de dialogue.
Pour me familiariser avec ce champ, j'ai ouvert un nouveau fichier calc dans lequel j'ai créé le dialog et recopié le code de la FAQ :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| REM ***** BASIC *****
'---
'La boîte de dialogue est composée:
' d'un objet CommandButton
' d'un objet DateField (calendrier) dont le format d'affichage est JJ.MM.AAAA,
' et d'une propriété "déroulante" = oui.
'---
Option Explicit
Global oDialog1 As Object
Sub AfficheBoiteDeDialogue()
DialogLibraries.LoadLibrary( "Standard" )
'Dialog1 est le nom de la Form
'(Clic droit sur l'objet / propriétés / onglet Général / Nom)
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
'--- Indique la date qui va s'afficher par défaut dans le contrôle "DateField1"
oDialog1.getControl("DateField1").Date = 20210131 'AAAAMMJJ
'--- Permet de définir une date mini et maxi utilisable dans le calendrier
oDialog1.getControl("DateField1").Model.DateMin = 20200101
oDialog1.getControl("DateField1").Model.DateMax = 20301231
'---
'Affiche la boîte de dialogue
oDialog1.Execute()
End Sub |
À l'exécution, le code s'arrête sur :
Code:
oDialog1.getControl("DateField1").Date = 20210131 'AAAAMMJJ
Avec le message suivant : "Erreur d'exécution Basic. Variable d'objet non définie"
Malgré mes recherches et divers essais, je tourne en rond et n'arrive pas à trouver ce qui cloche chez moi.
Des idées ???
Merci de votre aide.
Erreur d'accès DateField dans une Boîte Dialogue
Bonjour,
Remplace
Code:
oDialog1.getControl("DateField1").Date = 20210131 'AAAAMMJJ
par : (affichage de la date courante
Code:
oDialog1.getControl("DateField1").Date = CDateToUnoDate( Date )
Pour les lignes :
Code:
1 2
| oDialog1.getControl("DateField1").Model.DateMin = 20200101
oDialog1.getControl("DateField1").Model.DateMax = 20301231 |
Mieux vaut les commenter et plutôt modifier les propriétés directement dans la boite de dialogue. Personnellement je n'utilise pas ce forme de codage.
J'ai oublié de préciser que le code exemple plutôt ancien est du code à la base pour open office. Mais avec libre office c'est différent depuis quelques années. c'est pour cela que çà ne fonctionne pas.
Citation:
LibreOffice 4.1.1 introduit une incompatibilité avec Apache OpenOffice et toutes les versions précédentes de LibreOffice.
Signalé dans LibreOffice 4.1 ReleaseNotes.
Contrôle DateField
Les pseudo-propriétés Date, Min, Max, First, Last, deviennent une structure com.sun.star.util.Date au lieu d'un Long. De même dans le modèle du contrôle, pour les propriétés Date, DateMin, DateMax.
Contrôle TimeField
Les pseudo-propriétés Time, Min, Max, First, Last, deviennent une structure com.sun.star.util.Time au lieu d'un Long. De même dans le modèle du contrôle, pour les propriétés Time, TimeMin, TimeMax.
Cordialement