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

From The Document Foundation Wiki
Jump to: navigation, search
This page is a translated version of the page Macros/Impress/002 and the translation is 100% complete.

Other languages:
English • ‎italiano

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