IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Erreur d'accès DateField dans une Boîte Dialogue [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 2
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre chevronné Avatar de Mobydick_62
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut Erreur d'accès DateField dans une Boîte Dialogue
    Bonjour,
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDialog1.getControl("DateField1").Date = 20210131 'AAAAMMJJ
    par : (affichage de la date courante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDialog1.getControl("DateField1").Date = CDateToUnoDate( Date )
    Pour les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    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

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 2
    Par défaut Résolu
    Avec une simple recherche sur ce forum, je trouve toujours les réponses à mes questions sans avoir à les poser, grâce à la qualité des réponses des intervenants.
    J'en profite donc pour remercier la communauté.

    Sur ce sujet je n'avais rien trouvé, merci à toi Mobydick_62 pour la qualité de ta réponse.
    Du coup, ça me débloque, et à la lumière de ta réponse, je complète pour ceux que cela peut aider dans le cas ou l'on veut maintenant lire le contenu du DateField
    => À titre d'exemple pour LibreOffice, et dans le contexte de la FaQ du Datefield, remplacez la macro InsertionDate() par celle-ci
    (Si pas d'accord, Mobydick_62, n'hésite pas à corriger car je code en dilettante) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    '--- La macro est rattachée au CommandButton de la boite de dialogue --- 
    'La date sélectionnée dans le DateField est affichée dans la messageBox 
    Sub InsertionDate() 
     
    Dim laDateLue As Date 
     
    laDateLue = CDateFromUnoDate(oDialog1.getControl("DateField1").Date)
     
    msgbox(laDateLue)
     
    End Sub
    Encore une fois merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Tableur] Réinitialiser un DateField dans une Boîte Dialogue
    Par coleoptere dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 23/09/2019, 00h38
  2. Réponses: 3
    Dernier message: 18/12/2006, 18h39
  3. Réponses: 2
    Dernier message: 09/10/2006, 17h21
  4. Réponses: 5
    Dernier message: 20/05/2006, 22h43
  5. [MFC] Dessiner dans une boîte de dialogue
    Par Philippe320 dans le forum MFC
    Réponses: 5
    Dernier message: 03/03/2006, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo