Seite 1 von 1
setzen Cursor auf textlose Überschrift?
Verfasst: Fr, 03.09.2004 19:52
von tommy
Hallo,
In einem Writer Dokument habe ich eine Zeile, bei der existiert eine Absatzvorlage als Überschrift (z.B Überschrift 1). Die Zeile ist leer.
Wie macht man, damit der Cursor an die Stelle springt und eine MsgBox erscheint?
Ich bin dankbar für eure Antwort.
Gruß
Tommy
Re: setzen Cursor auf textlose Überschrift?
Verfasst: Sa, 04.09.2004 00:45
von Stephan
tommy hat geschrieben:Hallo,
In einem Writer Dokument habe ich eine Zeile, bei der existiert eine Absatzvorlage als Überschrift (z.B Überschrift 1). Die Zeile ist leer.
Wie macht man, damit der Cursor an die Stelle springt und eine MsgBox erscheint?
Ich bin dankbar für eure Antwort.
Gruß
Tommy
Code: Alles auswählen
Sub Main
Dim Doc As Object
Dim Cursor As Object
Dim Proceed As Boolean
Doc = StarDesktop.CurrentComponent
Cursor1 = Doc.Text.createTextCursor
Cursor1.gotoStart(False)
weiter = True
Do
If Cursor1.supportsService("com.sun.star.style.ParagraphProperties") Then
'Name der Überschriftenvorlage abändern, ACHTUNG: Überschrift1
'heißt z.B. "Heading 1".
'Eigene Vorlagen heißen natürlich so wie der vergebene Name.
If Cursor1.ParaStyleName = "Name der Überschriftenvorlage" Then
Cursor1.gotoEndOfParagraph(True)
xxx = Cursor1.String
If xxx = "" Then
Cursor = Doc.CurrentController.getviewCursor()
Cursor.GotoRange(Cursor1,False)
Msgbox "Bin hier!"
End if
End if
End If
weiter = Cursor1.gotoNextParagraph(false)
Loop While weiter
End Sub
Gruß
Stephan
Verfasst: Mo, 06.09.2004 13:40
von tommy
Hi Stephan,
danke für Dein Code. Nachdem ich auf OK von MsgBox geklickt habe, sehe ich den Cursor nicht.
Frage: kann man so machen, dass man nachdem Klick auf OK die Cursor sehen kann? Wenn das nicht geht, dann habe ich folgendes überlegt: An der Stelle, wo textlose Überschrift ist, soll ein Text z.B "diese Zeile soll gelöscht werden" hinzugefügt werden. Ist das möglich?
Gruß
Tommy
Verfasst: Mo, 06.09.2004 15:16
von Stephan
Nachdem ich auf OK von MsgBox geklickt habe, sehe ich den Cursor nicht.
Frage: kann man so machen, dass man nachdem Klick auf OK die Cursor sehen kann?
Das sollte gehen, da der Code extra den Cursor sichtbar macht, bei mir geht das auch. Versuche doch mal diesen Teil des Codes:
Code: Alles auswählen
If xxx = "" Then
Cursor = Doc.CurrentController.getviewCursor()
Cursor.GotoRange(Cursor1,False)
Msgbox "Bin hier!"
End if
so zu schreiben, dann müßte es definitiv gehen:
Code: Alles auswählen
If xxx = "" Then
Msgbox "Bin hier!"
Cursor = Doc.CurrentController.getviewCursor()
Cursor.GotoRange(Cursor1,False)
End if
An der Stelle, wo textlose Überschrift ist, soll ein Text z.B "diese Zeile soll gelöscht werden" hinzugefügt werden. Ist das möglich?
Na klar:
Code: Alles auswählen
Sub Main
Dim Doc As Object
Dim Cursor As Object
Dim Proceed As Boolean
Doc = StarDesktop.CurrentComponent
Cursor1 = Doc.Text.createTextCursor
Cursor1.gotoStart(False)
weiter = True
Do
If Cursor1.supportsService("com.sun.star.style.ParagraphProperties") Then
'Name der Überschriftenvorlage abändern, ACHTUNG: Überschrift1
'heißt z.B. "Heading 1".
'Eigene Vorlagen heißen natürlich so wie der vergebene Name.
If Cursor1.ParaStyleName = "Name der Überschriftenvorlage" Then
Cursor1.gotoEndOfParagraph(True)
xxx = Cursor1.String
If xxx = "" Then
Cursor1.SetString("diese Zeile soll gelöscht werden")
Msgbox "Test"
End if
End if
End If
weiter = Cursor1.gotoNextParagraph(false)
Loop While weiter
End Sub
Gruß
Stephan
Verfasst: Mo, 06.09.2004 16:35
von tommy
Hi Stephan,
danke für die schnelle Antwort. Durch folgende Änderung an den Code ist die Cursor immer noch nicht zu sehen
Code: Alles auswählen
If xxx = "" Then
Cursor = Doc.CurrentController.getviewCursor()
Cursor.GotoRange(Cursor1,False)
Msgbox "Bin hier!"
End if
Kann das sein, das es daran liegt, dass der Dokument unaktiv ist und der MsgBox aktiv ist?
Verfasst: Mo, 06.09.2004 18:01
von Stephan
Kann das sein, das es daran liegt, dass der Dokument unaktiv ist und der MsgBox aktiv ist?
Solange die MsgBox offen ist kannst Du im Dokument nichts bearbeiten und deshalb ist auch kein Cursor zu sehen, aber ich dachte es geht darum das:
Nachdem ich auf OK von MsgBox geklickt habe, sehe ich den Cursor nicht.
Wenn Du die MsgBox schließt muß der Cursor zu sehen sein.
Wenn die MsgBox offen ist und Du einen Cursor sehen willst, sehe ich keinen Weg - außer dort wo der Cursor wäre irgendetwas einzutragen oder eine Hervorhebung oder Ähnliches, das hast Du schon selbst vorgeschlagen.
Gruß
Stephan
Verfasst: Mo, 06.09.2004 18:15
von tommy
Wenn Du die MsgBox schließt muß der Cursor zu sehen sein.
Er ist bei mir nicht zu sehen.
Ich habe in dem Dokument einen Knopf, wenn er geklickt wird, wird ein Makro aufgerufen.
Ich benutze OOo1.1.2
Verfasst: Mo, 06.09.2004 19:45
von Stephan
Ich habe in dem Dokument einen Knopf, wenn er geklickt wird, wird ein Makro aufgerufen.
Sobald Du die Schaltfläche drückst erhält sie den Fokus (Beschriftung der Schaltfläche ist von punktierten Rahmen umgeben) und der Text Deines Dokuments verliert selbigen, ich weiß nicht wie ich das ändern soll (*).
Starte das Makro aus dem Menü oder von einer Menüschaltfläche aus oder mit Tastenkombination.
(*)ich habe hierzu einen neuen thread eröffnet
Gruß
Stephan
Verfasst: Di, 07.09.2004 11:44
von tommy
Hi Stephan,
ich habe den Code etwas geändert und starte das Makro aus dem Menü.
Jetzt kann ich den Cursor sehen. Ich habe das MsgBox am Ende erscheinen lassen, damit ich den Cursor sehen kann. Folgendes ist der Code:
Code: Alles auswählen
Cursor1 = ThisComponent.Text.createTextCursor
Cursor1.gotoStart(False)
weiter = True
Do
If Cursor1.supportsService("com.sun.star.style.ParagraphProperties") Then
If Left(Cursor1.ParaStyleName, 7) = "Heading" Then
Cursor1.gotoEndOfParagraph(True)
HeadingText = Cursor1.String
If HeadingText = "" Then
wait 500
Cursor2 = ThisComponent.CurrentController.getviewCursor()
Cursor2.GotoRange(Cursor1,false)
StructurError=true
End if
End if
End If
weiter = Cursor1.gotoNextParagraph(false)
Loop While weiter
if StructurError then
wait 500
Msgbox "An der Stelle(n), wo der Cursor eben zu sehen war." &_
" ist eine Überschriftebene formatiert."
end if
Gruß
Tommy