[gelöst]Cursorsprung an andere Textmarke mit markierten Bild

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

Moderator: Moderatoren

pk444
Beiträge: 2
Registriert: Mo, 08.09.2008 10:51

[gelöst]Cursorsprung an andere Textmarke mit markierten Bild

Beitrag von pk444 »

Hallo,

ich benötige Eure Hilfe. Trotz Suchens uns Ausprobierens bin ich noch nicht weitergekommen.

Folgendes Problem:

Wenn ich mittels:

Code: Alles auswählen

Cursor = thiscomponent.CurrentController.getviewCursor()
if thiscomponent.Bookmarks.hasByName("bild") then
 Bookmark = thiscomponent.Bookmarks.getByName("bild").Anchor
 Cursor.gotorange(Bookmark, False)   
end if
eine Textmarke 'bild' anspringe, also mit einem VisibleCursor, und an dieser Stelle ein Bild einfüge:

Code: Alles auswählen

Sub insertimage(url$)
 Dim oFrame
 Dim oDisp
 Dim oProp(1) as new com.sun.star.beans.PropertyValue
 oFrame = ThisComponent.CurrentController.Frame
 oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
 oProp(0).Name = "FileName"
 oProp(0).Value = url$
 oProp(1).Name = "AsLink"
 oProp(1).Value = False
 oDisp.executeDispatch(oFrame, ".uno:InsertGraphic", "", 0, oProp())
end sub
dann kommt beim Wechsel auf eine neue Textmarke 'unterschrift' mit dem Befehl:

Code: Alles auswählen

Cursor = thiscomponent.CurrentController.getviewCursor()
 if thiscomponent.Bookmarks.hasByName("unterschrift") then
 Bookmark = thiscomponent.Bookmarks.getByName("unterschrift").Anchor
 Cursor.gotorange(Bookmark, False)   
end if
der Fehler "No text selection"

Ich habe herausgefunden, dass nach dem Einfügen des Bildes, das Bild markiert ist, also mit den vier grünen Punkten umgeben ist. Ich gehe davon aus, dass der Cursor jetzt verschwunden ist, und ich ihn daher nicht mehr zur nächsten Textmarke bewegen kann. Das Setzen eines neuen Cursors brachte keinen Erfolg, da die Markierung immer noch auf dem Bild ist.

Ich konnte auch herausfinden, dass sobald ich die Markierung des Bildes mittels manuellen Klick irgendwo in das Dokument aufhebe, dass Makro, also die Ansteuerung der neuen Textmarke funktioniert.

Das Ganze lässt sich auch ohne grösseren Aufwand nachvollziehen. Einfach ein Bild in ein OO-Dokument einfügen, Bild markieren, so dass es die grünen Punkte erhält und

Code: Alles auswählen

Cursor = thiscomponent.CurrentController.getviewCursor()
if thiscomponent.Bookmarks.hasByName("bild") then
 Bookmark = thiscomponent.Bookmarks.getByName("bild").Anchor
 Cursor.gotorange(Bookmark, False)   
end if
ablaufen lassen. Der Fehler tritt immer an der Zeile
#Cursor.gotorange(Bookmark, False)
auf.

Habt Ihr eine Ahnung, wie ich die neue Textmarke anspringen kann, bzw. wie ich die Markierung des Bildes aufheben kann?

Vielen Dank schon mal im Voraus.

pk444
Zuletzt geändert von pk444 am Di, 09.09.2008 07:02, insgesamt 2-mal geändert.
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Cursorsprung an andere Textmarke mit markierten Bild

Beitrag von ykcim »

Hallo,

die Ursache für diesen Fehler ist das eigentlich erwischte Objekt mit getViewCursor. Du hast dann die Grafik erwischt und diese Objekt hat die Eigenschaften und Methoden nicht des Text-Objektes. Daher geht gotorange nicht.
Man muss vorher prüfen ob man das richtige Objekt hat (Prüfen muss auf das Textobjekt). Ist es das falsche kann man den ViewCursor neu an den Anfang des Dokumentes mit createtextcursor und select setzen.
Leider geht die Prüfung nicht. Weil OO mal wieder macht was es will.

Code: Alles auswählen

  mytextCursor=ThisComponent.text.createtextcursor()
  ThisComponent.getCurrentController().select(mytextCursor)
  Cursor = thiscomponent.CurrentController.getviewCursor()

if thiscomponent.Bookmarks.hasByName("test") then
Bookmark = thiscomponent.Bookmarks.getByName("test").Anchor
Cursor.gotorange(Bookmark, False)   
end if 

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
pk444
Beiträge: 2
Registriert: Mo, 08.09.2008 10:51

Re: Cursorsprung an andere Textmarke mit markierten Bild

Beitrag von pk444 »

Hallo Michael,

vielen Dank. Jetzt läufts.

pk444
Antworten