Macros/Writer/001

    From The Document Foundation Wiki
    < Macros‎ | Writer
    This page is a translated version of the page Macros/Writer/001 and the translation is 100% complete.


    Other languages:

    Beschrijving

    Hier willen we beschrijven hoe je een macro maakt voor Writer om een eigen notitie toe te voegen op de plek waar de cursor staat (hier willen we de velden Auteur en/of Datum wijzigen).

    We gebruiken de services com.sun.star.text.XTextViewCursor[1] en com.sun.star.text.textfield.Annotation[2] als ook de structure com.sun.star.util.DateTime[3] om het tijdstempel op te halen op het moment van uitvoeren.

    Code

    De volgende macro, waar je een sneltoets voor zou kunnen maken, voegt een notitie toe op de huidige positie van de cursor:

    Option Explicit
    
    Sub InsertComment
        '''Voeg een notitie toe op de plaats van de cursor'''
    
        Dim oCurs As Object ' com.sun.star.text.text.XTextViewCursor
        Dim oAnnot As Object ' com.sun.star.text.textfield.Annotation
        Dim oDateTime As New com.sun.star.util.DateTime
    
        oCurs = ThisComponent.CurrentController.getViewCursor()
        oAnnot = ThisComponent.createInstance( _
            "com.sun.star.text.textfield.Annotation")
    
        With oDateTime ' com.sun.star.util.DateTime
            .Minutes = 20
            .Hours = 12
            .Day = 20
            .Month = 12
            .Year = 2012
        End With
       
        With oAnnot ' com.sun.star.text.textfield.Annotation
            .Author = "Auteur van de notitie"
            .Content = "Inhoud van de notitie"
            .DateTimeValue = oDateTime
        End With
    
        oAnnot.attach(oCurs.Start) ' Toevoegen op de plek van de cursor
    
    End Sub ' InsertComment

    In Python:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    import uno
    
    def InsertComment():
        """Toevoegen op de plek van de cursor
        
        curs    com.sun.star.text.text.XTextViewCursor
        annot   com.sun.star.text.textfield.Annotation
        """
        dt = uno.createUnoStruct("com.sun.star.util.DateTime")
    
        thisComponent = XSCRIPTCONTEXT.getDocument()
        curs = thisComponent.CurrentController.getViewCursor()
        annot = thisComponent.createInstance(
            "com.sun.star.text.textfield.Annotation")
    
        dt.Minutes = 20
        dt.Hours = 12
        dt.Day = 20
        dt.Month = 12
        dt.Year = 2012
    
        annot.Author = "Auteur van de notitie"
        annot.Content = 'Inhoud van de notitie'
        annot.DateTimeValue = dt
    
        annot.attach(curs.Start)  # Toevoegen op de plek van de cursor

    In de voorbeelden hebben we de berekening van het tijdstempel weggelaten.

    Notities