Textmarken in Rahmen

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

Moderator: Moderatoren

susapo
**
Beiträge: 22
Registriert: Fr, 31.01.2020 19:47

Textmarken in Rahmen

Beitrag von susapo »

Und gleich ein neues Problem.
ich habe textmarken (Lesezeichen) in ein Wtiter-Dok eingefügt und will per makro dort Text ablegen. Funkt soweit auch gut mit
KKDoc = thiscomponent

textcursor= KKDoc.Text.CreateTextCursor

textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
textcursor.gotoEndOfParagraph(True)
textcursor.String = "Hr. Maier"
wenn die Textmarken aber in einem Rahmen stehen (Für's Anschriftenfeld) geht das nicht mehr.
ich kann die zwar auslesen mit

test = KKDoc.getBookmarks()

aber die obere Variante funktioniert nicht.
ich muß wohl einen textcursor für das frame machen, habe im Netz Teile gefunden wie

Code: Alles auswählen

formFrames = ThisComponent.getTextFrames()
  
   for i = 0 to formFrames.Count -1 
      formFrame = formFrames(i) 
      if formFrame.Name = "Rahmen1" then
      ...
"Rahmen1" wird gefunden, und dann weiß ich nicht weiter....
wie kann ich die Textmarken im Rahmen ansprechen?
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Textmarken in Rahmen

Beitrag von Stephan »

WENN bekannt ist das in "Rahmen1" wirklich die Textmarke "KKAnsprech" vorhanden ist, dann z.B.:

Code: Alles auswählen

Sub Main
	KKDoc = thiscomponent
	formFrames = KKDoc.getTextFrames()
  
	for i = 0 to formFrames.Count -1 
      formFrame = formFrames(i) 
      if formFrame.Name = "Rahmen1" then
      	textcursor = formFrame.Text.CreateTextCursor
      	textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
		textcursor.gotoEndOfParagraph(True)
		textcursor.String = "Hr. Maier"
      End If
   Next i    
End Sub
ansonsten z.B.:

Code: Alles auswählen

Sub Main2
	KKDoc = thiscomponent
	formFrames = KKDoc.getTextFrames()
  
	On Error Resume Next
	for i = 0 to formFrames.Count -1 
      formFrame = formFrames(i) 
      	textcursor = formFrame.Text.CreateTextCursor
      	textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
		textcursor.gotoEndOfParagraph(True)
		textcursor.String = "Hr. Maier"
   Next i    
End Sub

Gruß
Stephan
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Textmarken in Rahmen

Beitrag von mikeleb »

Hallo,
es klappt auch, wenn man untersucht, wo sich das Lesezeichen befindet.

Code: Alles auswählen

Sub Main3
	KKDoc = thiscomponent
	formFrames = KKDoc.getTextFrames()
  	lz=KKDoc.getBookmarks().getByName("Lesezeichen 1")
  	lz_anker=lz.getanchor
	'standardmäßig sei das Lesezeichen im eigentlichen Fließtext
	oBereich=KKDoc
	'alternativ in einem Rahmen oder Tabelle?
  	lz_frame=lz_anker.textframe
  	lz_tab=lz_anker.cell
  	if isobject(lz_frame) then
  		oBereich=lz_frame
  	elseif isobject(lz_tab) then
  		oBereich=lz_tab
  	end if
   	textcursor = oBereich.Text.CreateTextCursor
   	textcursor.gotoRange(lz_anker, false)
	textcursor.String = "Hr. Maier"
End Sub
Gruß,
mikeleb
susapo
**
Beiträge: 22
Registriert: Fr, 31.01.2020 19:47

Re: Textmarken in Rahmen

Beitrag von susapo »

Hallo Stephan,
herzlichen Dank!
Ja es ist bekannt, wo die Textmarke liegt, weil ich sie selber gesetzt habe. Insofern ist die erste Lösung perfekt.
Die zweite Lösung ist ja echt cool!, fahr den Karren solange gegen die Wand, bis vllt die Tür aufgeht.
Auf sowas komm ich immer gar nciht.

Hallo mikeleb,
Dank auch an dich. Deinen Code heb ich mir für später auf, zZ hab ich es nur mit selbst angelegten Textmarkwen zu tun.

mfG Michael
Textmarken sichtbar machen geht offenbar nicht im Writer, hat da jmd schon mal ein Makro geschrieben für?
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Textmarken in Rahmen

Beitrag von mikeleb »

Hallo,
wenn klar ist, dass die Textmarke in einem Rahmen ist, reicht folgendes:

Code: Alles auswählen

Sub Main4
	KKDoc = thiscomponent
  	lz=KKDoc.getBookmarks().getByName("Lesezeichen 1")
  	lz_anker=lz.getanchor
   	textcursor = lz_anker.textframe.Text.CreateTextCursor
   	textcursor.gotoRange(lz_anker, false)
	textcursor.String = "Hr. Maier"
End Sub
Gruß,
mikeleb
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Textmarken in Rahmen

Beitrag von mikeleb »

Hallo,
Textmarken sichtbar machen geht offenbar nicht im Writer, hat da jmd schon mal ein Makro geschrieben für?
Was meinst du mit "sichtbar machen"? Zum Finden bietet sich der Navigator an.
Gruß,
mikeleb
susapo
**
Beiträge: 22
Registriert: Fr, 31.01.2020 19:47

Re: Textmarken in Rahmen

Beitrag von susapo »

mit sichtbar machen meine ich das, was man mit Feldnamen tun kann unter Ansicht-Feldnamen.
Also dass man auf einen Blick sieht, wo überall Textmarken stehen.
Antworten