1. Anlauf
Bild markieren, in die IDE gewechselt, Makro gestartet.
Geht nicht, weil CurrentSelection nun in der IDE liegt und nicht auf dem Bild in Writer.
Tschuldigung, aber ich bin jetzt einmal genau, weil das vielleicht auch einmal beim Programmierverständnis hilft.
.CurrentSelection allein legt nicht fest um welche Selection es geht, sondern es gibt:
und
und Beide verhalten sich teils unterschiedlich weil StarDesktop.CurrentComponent immer die aktuell sichtbare Komponente von OO meint, ThisComponent hingegen die
letztaktuelle Komponente bzw. das letztaktuelle Dokument (die nicht unbedingt die Sichtbare sein muss) aus Sicht des Makros.
z.B. siehe auch:
http://www.starbasicfaq.de/Worinbesteht ... hisCo.html
"letztaktuelle Komponente bzw. das letztaktuelle Dokument"?
Naja, ich bin nicht ganz entschlossen welche Formulierung hier richtig ist, denn OO versteht in diesem Zusammenhang _z.B._ auch Hilfe-Seiten als Dokumente (sofern ich mich recht erinnere).
Praktisch dürfte wohl "letztaktuelle Dokument" die richtige Formulierung sein, man sollte aber 'Komponente' immer im Hinterkopf haben.
Mit StarDesktop.CurrentComponent kann es eigentlich keine Verständnisprobleme geben, mit ThisComponent gibt es gelegentlich Welche z.B. dann wenn man ein Makro mit dem Bezug auf ein Dokument beginnt, im Verlaufe des Makros jedoch ein anderes Dokument das Aktuelle wird, tz.B. weil man ein Neues öffnet oder insbesondere ein altes schließt.
Bei dem in der Rede stehenden Code der Extension wird aber ThisComponent verwendet:
Code: Alles auswählen
Sub WT_BildDrehen
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc = thisComponent
oSel = oDoc.getCurrentSelection
'...
weswegen es kein Problem geben sollte und ich offen gesagt das von Dir hier genannte Problem:
"Geht nicht, weil CurrentSelection nun in der IDE liegt ..."
auch beim praktischen Testen
nicht nachvollziehen kann.
Gruß
Stephan
[quote]1. Anlauf
Bild markieren, in die IDE gewechselt, Makro gestartet.
Geht nicht, weil CurrentSelection nun in der IDE liegt und nicht auf dem Bild in Writer.[/quote]
Tschuldigung, aber ich bin jetzt einmal genau, weil das vielleicht auch einmal beim Programmierverständnis hilft.
.CurrentSelection allein legt nicht fest um welche Selection es geht, sondern es gibt:
[code]ThisComponent.getCurrentSElection
[/code]
und
[code]StarDesktop.CurrentComponent.getCurrentSelection
[/code]
und Beide verhalten sich teils unterschiedlich weil StarDesktop.CurrentComponent immer die aktuell sichtbare Komponente von OO meint, ThisComponent hingegen die[color=#0000FF] letztaktuelle Komponente bzw. das letztaktuelle Dokument[/color] (die nicht unbedingt die Sichtbare sein muss) aus Sicht des Makros.
z.B. siehe auch:
http://www.starbasicfaq.de/WorinbestehtderUnterschiedzwischenthisCo.html
[color=#0000FF]"letztaktuelle Komponente bzw. das letztaktuelle Dokument"?[/color]
Naja, ich bin nicht ganz entschlossen welche Formulierung hier richtig ist, denn OO versteht in diesem Zusammenhang _z.B._ auch Hilfe-Seiten als Dokumente (sofern ich mich recht erinnere).
Praktisch dürfte wohl "letztaktuelle Dokument" die richtige Formulierung sein, man sollte aber 'Komponente' immer im Hinterkopf haben.
Mit StarDesktop.CurrentComponent kann es eigentlich keine Verständnisprobleme geben, mit ThisComponent gibt es gelegentlich Welche z.B. dann wenn man ein Makro mit dem Bezug auf ein Dokument beginnt, im Verlaufe des Makros jedoch ein anderes Dokument das Aktuelle wird, tz.B. weil man ein Neues öffnet oder insbesondere ein altes schließt.
Bei dem in der Rede stehenden Code der Extension wird aber ThisComponent verwendet:
[code]Sub WT_BildDrehen
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc = thisComponent
oSel = oDoc.getCurrentSelection
'...
[/code]
weswegen es kein Problem geben sollte und ich offen gesagt das von Dir hier genannte Problem:
[i]"Geht nicht, weil CurrentSelection nun in der IDE liegt ..."
[/i]
auch beim praktischen Testen [u]nicht [/u]nachvollziehen kann.
Gruß
Stephan