Makro in Impress: Duplizieren + Inhalte löschen in Objekten

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

apop343
Beiträge: 2
Registriert: Mo, 16.09.2013 15:36

Makro in Impress: Duplizieren + Inhalte löschen in Objekten

Beitrag von apop343 »

Hallo, bin blutiger Anfänger in der OOo-Makro-Programmierung - aber vielleicht kann mir jemand beistehen?

Ich benutze Impress, um mit Kunden zusammen Ideen zu entwickeln. Dafür benutze ich die rechteckigen Zeichnungsobjekte wie Moderationskarten.
Das heisst: eine Idee mit ein paar Stichworten auf eine Karte schreiben, dann brauche ich eine neue leere Karte darunter.
Und genau für diese Aktion "neue leere Karte darunter" benötige ich ein Makro, damit ich nicht jedesmal duplizieren, fenster bestätigen, bisherigen Inhalt löschen klicken muss. Vermutlich für erfahrene Makro-Programmierer ein Klacks, für mich unlösbar...

Ein bisschen habe ich ja schon:

Code: Alles auswählen

sub KopiereneinfuegenKarte
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
end sub
...damit ist schon mal eine identische Kopie der bisherigen markierten Karte entstanden.
Was muss ich nun programmieren, damit die Kopie zum Beispiel 2,0 cm in der Y-Achse versetzt wird und deren Inhalt gelöscht wird?
Vielen Dank für Eure Hilfe!


Moderation:
[​code]…[​/code] Tags gesetzt
lorbass, Moderator
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro in Impress: Duplizieren + Inhalte löschen in Objek

Beitrag von F3K Total »

Hi,
dies funktioniert:

Code: Alles auswählen

sub KopiereneinfuegenKarte
    dim document   as object
    dim dispatcher as object
    oRectangle = thiscomponent.currentselection(0)
    if isnull (oRectangle) then 
        msgbox ("Bitte zu kopierende Karte markieren",16,"Fehler")
        exit sub
    endif
    opos = oRectangle.Position
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
    dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
    onewRectangle = thiscomponent.currentselection(0)
    opos.Y = oPos.Y + 2000 '2,000 cm nach unten
    onewRectangle.Position = opos
    onewRectangle.String =""
end sub
Siehe auch Beispieldatei.
EDIT: Habe eine überflüssige Makro Zeile gelöscht. Anhang erneut hochgeladen.
Gruß R
Dateianhänge
Copy_Rectangle.odp
(13.14 KiB) 76-mal heruntergeladen
Zuletzt geändert von F3K Total am Mo, 16.09.2013 23:20, insgesamt 2-mal geändert.
apop343
Beiträge: 2
Registriert: Mo, 16.09.2013 15:36

Re: Makro in Impress: Duplizieren + Inhalte löschen in Objek

Beitrag von apop343 »

hallo F3K total,
wow, es klappt, super, vielen dank!
wenn ich mir den code so anschaue, wirkt er zwar hübsch und klar, aber doch so, dass ich selber wohl noch jahre daran gedoktort hätte...
auch danke dem moderator für die überarbeitung meiner frage.
so macht computern und foren-nutzen spaß!
Antworten