Manipolare selettivamente le Linee (LineShape) degli oggetti nella dispositiva corrente

    From The Document Foundation Wiki
    This page is a translated version of the page Macros/Impress/002 and the translation is 100% complete.


    Other languages:

    Descrizione

    Spesso risulta utile essere in grado di selezionare ciclicamente una specifica classe di oggetti presenti nella diapositiva corrente. Per esempio potreste avere diversi oggetti all'interno della diapositiva, come immagini com.sun.star.GraphicObjectShape o forme del tipo com.sun.star.drawing.RectangleShape. Pensate di voler modificare una proprietà di tutte le forme di un tipo.

    La macro che segue esegue un ciclo su tutte le forme com.sun.star.drawing.LineShape[1], quindi modifica alcune proprietà di ogni forma (LineShape). Perciò la macro illustra le varie proprietà delle forme (LineShape) che potreste voler modificare, come il colore, inoltre mostra come selezionare ciclicamente i vari oggetti all'interno della diapositiva corrente.

    Non è necessario precisare che la macro può fungere da modello anche per altre applicazioni. Una versione modificata del codice sottostante è contenuta nel file ODP scaricabile in seguito, nel quale la macro è stata suddivisa in diverse macro, assegnate a differenti Pulsanti, come visibile nella seguente schermata:

    Diapositiva con dei Pulsanti collegati alle macro che modificano le proprietà delle forme (LineShape).




















    Codice

    LibreOffice Basic

    'Option Explicit
    
    Sub manipulate_lineshapes ()
        '''Seleziona ciclicamente tutti gli oggetti com.sun.star.drawing.LineShape e manipola le relative proprietà.'''
    
        oSlide = ThisComponent.CurrentController.CurrentPage
    
        For i = 0 To oSlide.getCount()-1
            With oSlide.getByIndex(i)
                If .getShapeType() = "com.sun.star.drawing.LineShape" Then
    
                    .LineWidth = .LineWidth + 50
                    .LineEndWidth = .LineEndWidth + 50
                    .LineEndName = "Square"  ' Arrow, Square, Circle, etc
                    .LineColor = RGB(52,101,164)
                    .LineStyle = com.sun.star.drawing.LineStyle.DASH   ' .SOLID or .DASH or .NONE
                    .LineDashName = "Ultrafine Dashed" ' Fine Dashed, Fine Dotted, Ultrafine Dashed, etc
    
                End If
            End With
        Next
    
    End Sub ' manipulate_lineshapes

    Python

    da completare

    Scaricate il file ODP

    Note