Feldgröße verändern

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

Moderator: Moderatoren

martin11
***
Beiträge: 98
Registriert: Do, 30.03.2017 16:07

Feldgröße verändern

Beitrag von martin11 » Do, 29.08.2019 21:51

Die Feldgröße möchte ich verändern.
In dem Code gibt es dazu kommentierte Zeilen.
Dort habe ich schon verschiedene Werte versucht, bin aber nicht zum Ziel gekommen.
In der JPG seht ihr, dass die ungeraden und geraden Seite dort oben unterschiedliche Anordnungen haben.
Es gibt eine Rahmenvorlage.
Benötige ich 2 Rahmenvorlagen?
In der Rahmenvorlage habe ich es versucht, fand aber nichts über die Lage links und rechts.
Muss der Code geändert, ergänzt werden?

Code: Alles auswählen

[

Sub kopftexte
	oDoc=Thiscomponent
	'lösche alle alten Kopfrahmen
	oFrames=odoc.getTextFrames()
	for i=oframes.count-1 to 0 step -1
		if left(oFrames.getbyindex(i).name,10)="Kopfrahmen" then 'lösche alten Rahmen
			oDoc.Text.removeTextContent(oFrames.getbyindex(i))
		end if
	next
	'öffne Calc
	sUrl=Thiscomponent.getUrl()
	for k=1 to len(sUrl)
		if mid(sUrl,k,1)="/" then slash=k
		if mid(sUrl,k,1)="." then punkt=k
	next k
	sPfad=left(sUrl,slash)
	sCalc=sPfad & "Kopfzeilen_Texte_Breit.ods"
	Dim myFileProp() as new com.sun.star.beans.PropertyValue
	oCalcDoc = StarDesktop.loadComponentFromURL(sCalc, "_blank", 0, myFileProp() )
	'Auslesen der Informationen
	aTexte=oCalcDoc.Sheets(0).getCellRangeByname("A2:D100").getDataArray
	oCalcDoc.Close(false)
	oView=oDoc.getcurrentcontroller().getviewcursor()
	'gehe zur ersten Seite
	oView.jumptofirstpage()
	' Vorbereitung Tabulator im Textrahmen
	Dim tab(0) As New com.sun.star.style.TabStop
	tab(0).Alignment = com.sun.star.style.TabAlign.RIGHT
	'Linienstil für Textrahmen
	Dim oLinie0 as New com.sun.star.table.BorderLine
	Dim oLinie1 as New com.sun.star.table.BorderLine
	oLinie0.innerLineWidth=0
	oLinie0.outerLineWidth=0
	'Ermittlung des Seitenformats
	formatname=oView.PageDescName
	StyleFamilies = oDoc.StyleFamilies
    PageStyles = StyleFamilies.getByName("PageStyles")
    if isempty(formatname) then     
	    PageFormat = PageStyles.getByName("Standard")
	  else
	    PageFormat = PageStyles.getByName(formatname)
	end if
	'Ermittlung der Seitenbreite und -ränder
	s_breite=PageFormat.width
	randl=PageFormat.Leftmargin
	randr=PageFormat.rightmargin
	oView.jumptolastpage()
	'Anzahl der Seiten?
	n=oDoc.getcurrentcontroller().pageCount
	z=0	'Zähler für aktuelles Kopftextepaar
	'Durchlauf durch alle Seiten
	for i=1 to n
		'erzeuge textrahmen [b] In den folgenden Zeilen habe ich gesucht und versucht[/b]
		oFrame = oDoc.createInstance("com.sun.star.text.TextFrame")
		with oFrame
			[b].name="Kopfrahmen" & i
			.width = s_breite-randl-randr
			.height=500	'Hier wird die Höhe der Textfelder festgelegt 500=5mm
			.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
			.HoriOrient=0
			.HoriOrientrelation=7
			.HoriOrientPosition =randl	'wie linker Rand
			.VertOrient=0
			.VertOrientRelation=7
			.VertOrientPosition = 300	'Position von oben: 3 mm[/b]
			'Umrandung
			.rightBorder=oLinie0
			.leftBorder=oLinie0
			.topBorder=oLinie0
			.bottomBorder=oLinie0
			.LeftBorderDistance=0
			.RightBorderDistance=0
			.Surround=com.sun.star.text.WrapTextMode.THROUGH
		end with
		oDoc.Text.insertTextContent(oview, oFrame, FALSE) 'oTextC
		'setze Anker auf richtige Seite
		oFrame.AnchorPageNo=i
		'Schreibe Text in Rahmen
		oFrameCursor=oFrame.createTextCursor()
		oFrameCursor.ParaStyleName="_Gl_Kopf-8-links"
		If int(i/2)=i/2 Then 'linke Seite
			oFrameCursor.ParaStyleName="_Gl_Kopf-8-rechts"
		End If
		If i=1 or i=n Then
			oFrameCursor.ParaStyleName="_Gl_Kopf-8-zentriert"
		End If
		'Text aus Calctabelle entnehmen
		If i>aTexte(z)(2) then z=z+1
		If int(i/2)=i/2 Then 'gerade Seite
			sKopf=aTexte(z)(0)
		Else
			sKopf=aTexte(z)(3)
		End If
		oFrameCursor.String=sKopf
	Next
End Sub

code]
Dateianhänge
A_Kopftexte_verändern.jpg
A_Kopftexte_verändern.jpg (166.49 KiB) 960 mal betrachtet

Stephan
********
Beiträge: 11251
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Feldgröße verändern

Beitrag von Stephan » Fr, 30.08.2019 08:47

Dort habe ich schon verschiedene Werte versucht, bin aber nicht zum Ziel gekommen.
Warum nicht? Wir können das nicht wissen, ohne das Du es uns sagst. Derzeitig macht das Makro den Rahmen so breit wie den Textbereich (Satzspiegel) und so hoch wie eine Textzeile, das sind keine erkennbar ungewöhnlichen Werte.
In der JPG seht ihr, dass die ungeraden und geraden Seite dort oben unterschiedliche Anordnungen haben.


Nein, der Screenshot zeit die Makrozuordnung für das Ereignis "Rahmengröße verändern" einer Rahmenvorlage.
Benötige ich 2 Rahmenvorlagen?
Keine Ahnung da ich nicht verstehe wohin die Frage zielt. Wahrscheinlich brauchst Du Keine, da im Makro ja überhaupt keine Rahmenvorlagen benutzt werden.
In der Rahmenvorlage habe ich es versucht, fand aber nichts über die Lage links und rechts.
im Dialog de Rahmenvorlage, im Register "Typ" im Bereich "POsition" ist das zu finden.
Muss der Code geändert, ergänzt werden?
Im Sinne der eigentichen Frage: ja, der Code muss geändert werden weil Du mit dessen Ergebnis nicht zufrieden bist. Wie der geändert werden muss keine Ahnung, denn Du sagst ja nicht was Du genau wilst. z.B. ist die Zeile für die Breite:

.width = s_breite-randl-randr

formal korrekt und kann aber trotzdem zu einem ungewollten ERgenis führen weil Du eine andere Breite willst. WElche Breite jedovch weiß hier niemand weil Du es nicht sagst.
Im grundsätzlichen Sinne ist am Code natürlich falsch:
-das "[" am Anfang und das "code]" am Ende
-das "b" (mit Klammern) in der Zeile .name="Kopfrahmen" & i
-das "THROUGH" in der Zeile .Surround=com.sun.star.text.WrapTextMode.THROUGH muss "THROUGHT" heissen


Gruß
Stephan

martin11
***
Beiträge: 98
Registriert: Do, 30.03.2017 16:07

Re: Feldgröße verändern

Beitrag von martin11 » Fr, 30.08.2019 09:45

Hallo Stephan,
ich wollte noch eine zweite JPG hochladen.
Das ist mir nicht gelungen.
Jetzt schicke ich die zweite.
An den roten Strichen erkennst Du, welche Werte ich verändern möchte.
Martin
Nachdem ich die Datei hochgeladen habe, konnte ich die nicht erkennen.
Ist das hier so.
Und nun nochmal

Stephan
********
Beiträge: 11251
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Feldgröße verändern

Beitrag von Stephan » Fr, 30.08.2019 11:00

ich wollte noch eine zweite JPG hochladen.
Das ist mir nicht gelungen.
Ich habe keine Ahnung warum nicht. Genügend Uploadkontigent ist vorhanden (habe ich gerade kontrolliert), andere mögliche Probleme sind mir nicht bekannt.
Ich würde deshalb raten den Upload-Versuch einfach zu wiederholen.


Gruß
Stephan

mikeleb
******
Beiträge: 814
Registriert: Fr, 09.12.2011 16:50

Re: Feldgröße verändern

Beitrag von mikeleb » Fr, 30.08.2019 22:58

Hallo,
@Stephan: martin11 arbeitet mit LO. Hier ist com.sun.star.text.WrapTextMode.THROUGH korrekt (siehe https://api.libreoffice.org/docs/idl/re ... d506a0b0ae)
Gruß,
mikeleb

Antworten