[gelöst] Seitenumbruch ohne Dispatcher

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

Moderator: Moderatoren

Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

[gelöst] Seitenumbruch ohne Dispatcher

Beitrag von opiWahn »

'nabend,

ich habe versucht mich bei "Seitenumbruch und vorhandene Seite einfügen" vom Dispatcher zu lösen.
Das gelang bis dahin aber alles andere als zufriedenstellend:

Code: Alles auswählen

Sub addForm

document = thisComponent.CurrentController.Frame

' funktioniert nach Umbau nicht mehr! --> Cursor beit an Position stehen
  oViewCursor = thisComponent.getCurrentController.getViewCursor
  oViewCursor.jumpToLastPage(true)
  oViewCursor.jumpToEndofPage(true)

' ersetzen durch ??? -> Ergebnis soll Seitenumbruch sein
' anschließend Dokument einfügen  
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")  
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Kind"
args1(0).Value = 3
args1(1).Name = "TemplateName"
args1(1).Value = ""
args1(2).Name = "PageNumber"
args1(2).Value = 0
dispatcher.executeDispatch(document, ".uno:InsertBreak", "", 0, args1())

' funktioniert!
Dim args2(0) as New com.sun.star.beans.PropertyValue
  oText = thisComponent.getText()
  oCursor = thisComponent.text.createtextcursor
  sInhalt="file:///C:/xxx/xtFormulare/form_a.odt"
  filetoinsert=converttourl(sInhalt)
  oCursor.InsertDocumentFromUrl(FileToInsert,args2())
  oCursor.gotoend(false)
  
End sub
Was läuft falsch?

Grüße
opiWahn
Zuletzt geändert von opiWahn am Sa, 02.04.2011 00:37, insgesamt 1-mal geändert.
Grüße
opiWahn
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [Makro] Seitenumbruch ohne Dispatcher

Beitrag von DPunch »

Aloha

In einem Writer-Dokument geht das prinzipiell so:

Code: Alles auswählen

	oDoc = thisComponent	
	oText = oDoc.Text	
	oTextCursor = oText.createTextCursor
	oTextCursor.gotoEnd(False)
	oTextCursor.BreakType = com.sun.star.style.BreakType.PAGE_AFTER
	oText.insertControlCharacter(oTextCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

Re: [Makro] Seitenumbruch ohne Dispatcher

Beitrag von opiWahn »

Hallo DPunch,
vielen Dank :)
Mal wieder genau das richtige, auch wenn ich zu später Std. nochmal alles auspacken mußte was ich bis jetzt verstanden habe :wink:
Hab's jetzt so zusammen gebaut:

Code: Alles auswählen

Sub addForm

  oViewCursor = thisComponent.getCurrentController.getViewCursor
  oViewCursor.jumpToLastPage(true)
  oViewCursor.jumpToEndofPage(true)
  
  Dim args2(0) as New com.sun.star.beans.PropertyValue
  oText = thisComponent.getText()   
  oTextCursor = oText.createTextCursor
  oTextCursor.gotoEnd(False)
  oTextCursor.BreakType = com.sun.star.style.BreakType.PAGE_AFTER
  oText.insertControlCharacter(oTextCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
  sInhalt="file:///C:/xxx/xtFormulare/form_a.odt"
  filetoinsert=converttourl(sInhalt)
  oTextCursor.InsertDocumentFromUrl(FileToInsert,args2())

End sub
Auf jeden Fall funktioniert es (ich hoffe ich hab keinen Bock geschossen, der sich noch rächt) und der Code ist nicht nur kürzer, er sieht auch noch gut aus.
Grüße
opiWahn
Antworten