Eingabefeld wird bei Öffnen des Dokumentes per script nicht abgefragt

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

Moderator: Moderatoren

pch1965
Beiträge: 2
Registriert: Do, 19.03.2015 17:37

Eingabefeld wird bei Öffnen des Dokumentes per script nicht abgefragt

Beitrag von pch1965 »

Hallo,
ich habe eine Writervorlage, bei der die Eingabefelder per Dialog abgefragt werden.
Öffne ich die Datei direkt im Explorer, funktioniert alles, wie es soll.
Öffne ich die Datei per script mit:

Code: Alles auswählen

Dim sVorlage as String
sVorlage = ConverttoUrl( "Pfad")
Dim Args()
oDoc = StarDesktop.loadComponentFromUrl(sVorlage, "_blank", 0, Args())
werden die Daten nicht abgefragt, sondern lediglich das Dokument geöffnet.
Hat jemand eine Idee, woran dies liegen könnte?
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Eingabefeld wird bei Öffnen des Dokumentes per script nicht abgefragt

Beitrag von Stephan »

Hat jemand eine Idee, woran dies liegen könnte?
.loadComponentFromURL erwartet den entsprechenden Parameter im Parameterarray:
http://www.openoffice.org/api/docs/comm ... cMode.html

Code: Alles auswählen

Sub eingabe()
Dim sVorlage as String
sVorlage = ConverttoUrl("D:\eingabetest.ott")
Dim Args(0) As New "com.sun.star.beans.PropertyValue"
Args(0).Name = "UpdateDocMode"
Args(0).Value = com.sun.star.document.UpdateDocMode.FULL_UPDATE

oDoc = StarDesktop.loadComponentFromUrl(sVorlage, "_blank", 0, Args())
End Sub
Gruß
Stephan
pch1965
Beiträge: 2
Registriert: Do, 19.03.2015 17:37

Re: Eingabefeld wird bei Öffnen des Dokumentes per script nicht abgefragt

Beitrag von pch1965 »

Hallo Stephan,
vielen Dank, hat super funktioniert.
Kann man solche Eingabefelder auch direkt (per Script) befüllen lassen?
Bei Platzhaltern funktioniert das ja problemlos.
Bei Eingabefeldern hab ich das noch nicht hinbekommen?
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Eingabefeld wird bei Öffnen des Dokumentes per script nicht abgefragt

Beitrag von Stephan »

Ich sehe keinen großen Unterschied denn auch für Eingabefelder muss lediglich das gewünschte Feld identifiziert und dann der Text eingetragen werden, lediglich haben Eingabefelder keinen Namen wie Textmarken sondern müssen über ihren Hinweistext oder den eigentlichen aktuellen Textinhalt identifiziert werden:

Code: Alles auswählen

Sub eingabe()
x_enum = ThisComponent.getTextFields().CreateEnumeration()
	Do While x_enum.hasMoreElements
		x_field = x_enum.NextElement()
			If x_field.SupportsService("com.sun.star.text.textfield.Input") Then
				'prüfen welches konkrete Feld
				If x_field.Hint = "Hinweistext" Then
				'alternativ: If x_field.Content = "mein alter Feldtext" Then
					x_field.Content = "mein neuer Feldtext"
					x_field.update()
				End If
			End If
	Loop
End Sub

Gruß
Stephan
Antworten