[gelöst] Eingabefeld auslesen und ändern mit inputbox

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

Moderator: Moderatoren

Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Eingabefeld auslesen und ändern mit inputbox

Beitrag von Ibanez »

Danek für die Mühe, ich werde es am Wochenende mal ausprobieren.

Schöne WE
Ibanez
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Eingabefeld auslesen und ändern mit inputbox

Beitrag von Ibanez »

Der Haken im Text erscheint. Allersdings wundere ich mich über zwei Dinge.
1. Im Dialogfenster selbst wird kein Punkt (wenn ich die entsprechende Stelle anklicke) im OptionsButton (Telefon) angezeigt.
2. Beim Befehl Auslesen bekomme ich immer eine Fehlermeldung an der Stelle "Opt_Button1 = MyControl.Label("OptionButtton_Festnetz")" - Objectvariable nicht belegt :-(

Lasse ich das Auslesen weg funktioniert das Häckchen setzen im Dokument, aber mit dem Fehler der unter 1. beschrieben wird. Das ist Blöd, da ich im Dialogfenster gerne sehen würde was zu Zeit auf dem Formular markiert ist. Alles andere klappt soweit!

Code: Alles auswählen

Sub Dlg_FB5
	Dialoglibraries.Loadlibrary("Standard")
	MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dlg_FB)
	Auslesen_OB5
	Felbefehl_lesen5
	MyDlg.Model.Step=5
	Ctl_Telefon = MyDlg.GetControl("TextField_Telnr")
		
	Ctl_Telefon.Model.Text = String_Telnr
	
	Ctl_Telefon.setfocus()
	MyDlg.Execute()
	MyDlg.Dispose()
end Sub

Sub Auslesen_OB5
   Opt_Button1 = MyDialog.getControl("OptionButton_Telnr")
   State_Opt1 = Opt_Button1.model.State
   msgbox State_Opt1
End Sub

Sub Checkbox_schreiben5
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)
	CtrlCheckBox = oForm.getByName("CheckBox_Festnetz")
	oKView = oController.getControl(CtrlCheckBox)
	CtrlCheckBox.State= 1 
	Myctrl= oKView.model.State 
End Sub	

Sub Felbefehl_lesen5
	oDoc = thisComponent
	strUserfield_Telefon = "Telnr"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Telnr = "com.sun.star.text.FieldMaster.User." + StrUserfield_Telefon
	String_Telnr = oTextFieldMasters.getByName(TxtUserfield_Telnr).content
End Sub

Sub Felbefehl_schreiben5
	strUserfield_Name = "Telnr"    
	Ctl_Telefon = MyDlg.GetControl("TextField_Telnr")
	String_Telefon = Ctl_Name.Model.Text		
	strContent_Telnr = String_Telnr
	
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	
	TxtUserfield_Telnr="com.sun.star.text.FieldMaster.User." + StrUserfield_Telefon
	oTextFieldMasters.getByName(TxtUserfield_Telnr).content = StrContent_Telnr

	oDoc.getTextFields().refresh()
	MyDlg.endexecute()
End Sub

Sub schflaeche_cbBack5
	Felbefehl_schreiben5
	Dlg_FB4
End sub

Sub schflaeche_cmd_ok5
	Felbefehl_schreiben5
End Sub

 
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Eingabefeld auslesen und ändern mit inputbox

Beitrag von turtle47 »

Ibanez hat geschrieben:Im Dialogfenster selbst wird kein Punkt (wenn ich die entsprechende Stelle anklicke) im OptionsButton (Telefon) angezeigt.
????

Ibanez hat geschrieben:Beim Befehl Auslesen bekomme ich immer eine Fehlermeldung an der Stelle "Opt_Button1 = MyControl.Label("OptionButtton_Festnetz")" - Objectvariable nicht belegt
Ist der Button wirklich so benannt?
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Eingabefeld auslesen und ändern mit inputbox

Beitrag von Ibanez »

????
Um es genauer zu erklären. Ich kann zwar den Bereich "Festnetz" anklicken, das runde Optionsfeld links neben dem Text bleibt aber leer und füllt sich nicht schwarz wie hier Bild. Somit wird zwar auf dem Dokument ein Haken im entsprechenden Markierungsfeld auftauchen, ich selber bekomme bei der Eingabe aber keine Rückmeldung. Auch beim nochmaligen Öffnen, seheh ich im Dialogfeld nicht was markiert ist.

[q[ote]Ist der Button wirklich so benannt?[/quote]
Nein. Richtigerweise heißt er "Opt_Button1 = MyControl.Label("OptionButton_Festnetz")
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Eingabefeld auslesen und ändern mit inputbox

Beitrag von Ibanez »

Um das ganze jetzt abzuschliesen gebe hier mal ein kleines Feedback wie ich zumindest die Texteingabe gelöst habe.
Nach dem Tip von Jürgen habe ich eine Dialogabfrage gemacht. Der Dialog heißt Dlg_FB und sollte individuell gestaltet werden. Ich habe anbei nur einen Teil hier gepostet.

Sollte jemand fragen haben kann er sich gerne dirket an mich wenden. Falls interesse besteht kann ich die Abfrage auch Hochladen.

Vielen Dank an Jürgen, ohne den ich wohl nie auf einen grünen Zweig gekommen wäre.
Ibanez

Code: Alles auswählen

Dim MyDlg as Object
Dim String_Name as String
Dim String_Vorname as String
Dim String_Strasse as String
Dim String_Plz as String
Dim String_Ort as String
Dim String_Telefon as String
Dim String_Oder as String
Dim String_Fax as String
Dim String_EmailV as String

Dim oDoc as Object
Dim oTextFieldMasters as Object
Dim TxtUserfield as String
Dim TxtName as String
Dim TxtVorname as String
Dim TxtStrasse as String
Dim TxtPlz as String
Dim TxtOrt as String
Dim TxtTelefon as String
Dim TxtOder as String
Dim TxtFax as String
Dim TxtEmail as String

rem ***** Beginn -- Dialogfenster1 *****

Sub Dlg_FB1
	Dialoglibraries.Loadlibrary("Standard")
	MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dlg_FB)
	Felbefehl_lesen1
	MyDlg.Model.Step=1
		
	Ctl_Name = MyDlg.GetControl("TextField_Name")
	Ctl_Vorname = MyDlg.GetControl("TextField_Vorname")
	Ctl_Strasse = MyDlg.GetControl("TextField_Strasse")
	Ctl_Plz = MyDlg.GetControl("TextField_Plz")		
	Ctl_Ort = MyDlg.GetControl("TextField_Ort")
	Ctl_Telefon = MyDlg.GetControl("TextField_Telefon")	
	Ctl_Oder = MyDlg.GetControl("TextField_Oder")
	Ctl_Fax = MyDlg.GetControl("TextField_Fax")
	Ctl_Email = MyDlg.GetControl("TextField_Email")	
		
	Ctl_Name.Model.Text = String_Name
	Ctl_Vorname.Model.Text = String_Vorname
	Ctl_Strasse.Model.Text = String_Strasse
	Ctl_Plz.Model.Text = String_Plz
	Ctl_Ort.Model.Text = String_Ort
	Ctl_Telefon.Model.Text = String_Telefon
	Ctl_Oder.Model.Text = String_Oder
	Ctl_Fax.Model.Text = String_Fax
	Ctl_Email.Model.Text = String_Email

	Ctl_Name.setfocus()
	MyDlg.Execute()
	MyDlg.Dispose()
end Sub

Sub Felbefehl_lesen1
	oDoc = thisComponent
	strUserfield_Name = "Name"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Name = "com.sun.star.text.FieldMaster.User." + StrUserfield_Name
	String_Name = oTextFieldMasters.getByName(TxtUserfield_Name).content
	
	strUserfield_Vorname = "Vorname"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Vorname = "com.sun.star.text.FieldMaster.User." + StrUserfield_Vorname
	String_Vorname = oTextFieldMasters.getByName(TxtUserfield_Vorname).content
	
	strUserfield_Strasse = "Strasse"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Strasse = "com.sun.star.text.FieldMaster.User." + StrUserfield_Strasse
	String_Strasse = oTextFieldMasters.getByName(TxtUserfield_Strasse).content

	strUserfield_Plz = "Plz"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Plz = "com.sun.star.text.FieldMaster.User." + StrUserfield_Plz
	String_Plz = oTextFieldMasters.getByName(TxtUserfield_Plz).content
	
	strUserfield_Ort = "Ort"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Ort = "com.sun.star.text.FieldMaster.User." + StrUserfield_Ort
	String_Ort = oTextFieldMasters.getByName(TxtUserfield_Ort).content
		
	strUserfield_Telefon = "Telefon"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Telefon = "com.sun.star.text.FieldMaster.User." + StrUserfield_Telefon
	String_Telefon = oTextFieldMasters.getByName(TxtUserfield_Telefon).content

	strUserfield_Oder = "Oder"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Oder = "com.sun.star.text.FieldMaster.User." + StrUserfield_Oder
	String_Oder = oTextFieldMasters.getByName(TxtUserfield_Oder).content
	
	strUserfield_Fax = "Fax"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Fax = "com.sun.star.text.FieldMaster.User." + StrUserfield_Fax
	String_Fax = oTextFieldMasters.getByName(TxtUserfield_Fax).content

	strUserfield_Email = "Email"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_Email = "com.sun.star.text.FieldMaster.User." + StrUserfield_Email
	String_Email = oTextFieldMasters.getByName(TxtUserfield_Email).content
End Sub

Sub Felbefehl_schreiben1
	oDoc = thisComponent
	strUserfield_Name = "Name"    
	Ctl_Name = MyDlg.GetControl("TextField_Name")
	String_Name = Ctl_Name.Model.Text		
	strContent_Name = String_Name

	strUserfield_Vorname = "Vorname"    
	Ctl_Vorname = MyDlg.GetControl("TextField_Vorname")
	String_Vorname = Ctl_Vorname.Model.Text		
	strContent_Vorname = String_Vorname
	
	strUserfield_Strasse = "Strasse"    
	Ctl_Strasse = MyDlg.GetControl("TextField_Strasse")
	String_Strasse = Ctl_Strasse.Model.Text		
	strContent_Strasse = String_Strasse
	
	strUserfield_Plz = "Plz"    
	Ctl_Plz = MyDlg.GetControl("TextField_Plz")
	String_Plz = Ctl_Plz.Model.Text		
	strContent_Plz = String_Plz

	strUserfield_Ort = "Ort"    
	Ctl_Ort = MyDlg.GetControl("TextField_Ort")
	String_Ort = Ctl_Ort.Model.Text		
	strContent_Ort = String_Ort
	
	strUserfield_Telefon = "Telefon"    
	Ctl_Telefon = MyDlg.GetControl("TextField_Telefon")
	String_Telefon = Ctl_Telefon.Model.Text		
	strContent_Telefon = String_Telefon
	
	strUserfield_Oder = "Oder"    
	Ctl_Oder = MyDlg.GetControl("TextField_Oder")
	String_Oder = Ctl_Oder.Model.Text		
	strContent_Oder = String_Oder
	
	strUserfield_Fax = "Fax"    
	Ctl_Fax = MyDlg.GetControl("TextField_Fax")
	String_Fax = Ctl_Fax.Model.Text		
	strContent_Fax = String_Fax
	
	strUserfield_Email = "Email"    
	Ctl_Email = MyDlg.GetControl("TextField_Email")
	String_Email = Ctl_Email.Model.Text		
	strContent_Email = String_Email
	
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	
	TxtUserfield_Name="com.sun.star.text.FieldMaster.User." + StrUserfield_Name
	oTextFieldMasters.getByName(TxtUserfield_Name).content = StrContent_Name

	TxtUserfield_Vorname="com.sun.star.text.FieldMaster.User." + StrUserfield_Vorname
	oTextFieldMasters.getByName(TxtUserfield_Vorname).content = StrContent_Vorname
	
	TxtUserfield_Strasse="com.sun.star.text.FieldMaster.User." + StrUserfield_Strasse
	oTextFieldMasters.getByName(TxtUserfield_Strasse).content = StrContent_Strasse
	
	TxtUserfield_Plz="com.sun.star.text.FieldMaster.User." + StrUserfield_Plz
	oTextFieldMasters.getByName(TxtUserfield_Plz).content = StrContent_Plz
	
	TxtUserfield_Ort="com.sun.star.text.FieldMaster.User." + StrUserfield_Ort
	oTextFieldMasters.getByName(TxtUserfield_Ort).content = StrContent_Ort
	
	TxtUserfield_Telefon="com.sun.star.text.FieldMaster.User." + StrUserfield_Telefon
	oTextFieldMasters.getByName(TxtUserfield_Telefon).content = StrContent_Telefon
		
	TxtUserfield_Oder="com.sun.star.text.FieldMaster.User." + StrUserfield_Oder
	oTextFieldMasters.getByName(TxtUserfield_Oder).content = StrContent_Oder
		
	TxtUserfield_Fax="com.sun.star.text.FieldMaster.User." + StrUserfield_Fax
	oTextFieldMasters.getByName(TxtUserfield_Fax).content = StrContent_Fax
		
	TxtUserfield_Email="com.sun.star.text.FieldMaster.User." + StrUserfield_Email
	oTextFieldMasters.getByName(TxtUserfield_Email).content = StrContent_Email

	oDoc.getTextFields().refresh()
	MyDlg.endexecute()
End Sub

rem ***** Ende -- Dialogfenster1 *****
Antworten