Seite 1 von 1

[gelöst] Seitenumbruch ohne Dispatcher

Verfasst: Fr, 01.04.2011 20:33
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

Re: [Makro] Seitenumbruch ohne Dispatcher

Verfasst: Fr, 01.04.2011 20:47
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)

Re: [Makro] Seitenumbruch ohne Dispatcher

Verfasst: Sa, 02.04.2011 00:34
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.