[gelöst] CurrentSelection bei mehreren Fenstern desselben...

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] CurrentSelection bei mehreren Fenstern desselben...

Re: CurrentSelection bei mehreren Fenstern desselben Dokumen

von wasi99 » Sa, 10.05.2014 19:24

Danke, Karolus, das funtkioniert!! ((LO ist zwar eben grad abgestürzt beim rumprobieren, aber davon sehen wir mal ab, es funktioniert *grundsätzlich*))

Meiner Meinung nach auch nicht wirklich ein Bug, ich habe so eine Lösung fast erwartet. Allerdings ist diese Lösung hier die universalere und wäre daher als 'Standard' sinnvoll.

Re: CurrentSelection bei mehreren Fenstern desselben Dokumen

von komma4 » Fr, 09.05.2014 09:05

Karolus hat geschrieben:

Code: Alles auswählen

doc = ThisComponent
frame_selection = doc.CurrentController.Frame.Controller.Selection.getByIndex(0)
Sehr schön
Karolus hat geschrieben:kein Bug
Na ja: wenn die (berechtigte) Erwartung des Anwenders (hier: dann wg. fehlender, unzureichender Dokumentation) nicht erfüllt wird... ist es ein Bug

Re: CurrentSelection bei mehreren Fenstern desselben Dokumen

von Karolus » Do, 08.05.2014 19:35

Hallo

Die aktuelle Selektion bei einem WriterDokument mit mehreren offenen Fenstern:

Code: Alles auswählen

doc = XSCRIPTCONTEXT.getDocument()
frame_selection = doc.CurrentController.Frame.Controller.Selection.getByIndex(0)
if frame_selection.CharUnderline == 10:
    frame_selection.CharUnderline = 0
else:
    frame_selection.CharUnderline = 10
Nach Basic übersetzt:

Code: Alles auswählen

doc = ThisComponent
frame_selection = doc.CurrentController.Frame.Controller.Selection.getByIndex(0)
if frame_selection.CharUnderline = 10 then
    frame_selection.CharUnderline = 0
else
    frame_selection.CharUnderline = 10
end if
@Winfried: kein Bug - vmtl. ist ...CurrentSelection nur eine Abkürzung solange nur ein Fenster offen ist.

Karolus

Re: CurrentSelection bei mehreren Fenstern desselben Dokumen

von komma4 » Do, 08.05.2014 18:30

Gar nicht.

Ich bekomme mit AOO zwar keine Exception, aber auch kein Ergebnis.

Auch in einem weiteren Fenster des Dokuments wird die currentSelection korrekt erkannt (MRI), aber die Aktion nicht ausgeführt.
Scheint ein Bug zu sein.

[habe auch mit StarDesktop.currentComponent.currentSelection getestet :( ]

[gelöst] CurrentSelection bei mehreren Fenstern desselben...

von wasi99 » Di, 06.05.2014 00:48

Ich verwende u.a. folgendes simples Makro, um die einfach gewellte Unterstreichung per Tastatur-Shortcut auf eine beliebige Auswahl in Writer anzuwenden:

Code: Alles auswählen

Sub ToggleUnderlineWave
If ThisComponent.CurrentSelection.getByIndex(0).CharUnderline = 10 then
   ThisComponent.CurrentSelection.getByIndex(0).CharUnderline = 0
Else
rem If it was not Wave, then set it
   ThisComponent.CurrentSelection.getByIndex(0).CharUnderline = 10
End if
Die gleichen Methoden verwende ich auch für ein paar andere komplexere Formatierungen. Das funktioniert auch prächtig.

...Solange ich das Dokument nur in einem Fenster offen habe. Oft bearbeite ich ein Writer Dokument aber in mehreren Fenstern zur gleichen Zeit (Fenster>neues Fenster). Dann laufen meine Makros nur noch korrekt ab, wenn ich sie im ersten, "originalen" Fenster aufrufe. Wenn ich sie hingegen in einem anderen Fenster der gleichen Dokuments aufrufe erhalte ich "BASIC-Laufzeitfehler. Objektvariable nicht belegt.".

Ich ahne, dass dann OO mit die ThisComponent.CurrentSelction irgendwie nicht mehr richtig zuordnen kann. Wir schreibe ich meine Makros so um, dass sie aus allen Fenstern ausführbar werden?


_____
LO 4.2.0.4 unter OS X 10.7.5

Nach oben