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

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Eingabefeld auslesen und ändern mit inputbox

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Do, 21.08.2008 09:49

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 *****

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Do, 14.08.2008 14:11

????
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")

Re: Eingabefeld auslesen und ändern mit inputbox

von turtle47 » Do, 14.08.2008 13:42

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?

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Do, 14.08.2008 13:10

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

 

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Fr, 08.08.2008 13:15

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

Schöne WE
Ibanez

Re: Eingabefeld auslesen und ändern mit inputbox

von turtle47 » Fr, 08.08.2008 11:36

Hallo Ibanez,

auslesen des Optionsbuttons aus einem Dialog erfolgt so:

Code: Alles auswählen

Sub Auslesen_Optionsbutton
	Opt_Button1 = MyDialog.getControl("OptionButton1")
	State_Opt1 = Opt_Button1.model.State 
	msgbox State_Opt1
End Sub
Ansprechen einer Checkbox in einem Dokument erfolgt so:

Code: Alles auswählen

Sub Checkbox_ansprechen
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)
	CtrlCheckBox = oForm.getByName("CheckBox1")'Achtung: Namen anpassen
	oKView = oController.getControl(CtrlCheckBox)
	CtrlCheckBox.State= 1 'State 1 = setzen / 0 = abwählen
	Myctrl= oKView.model.State 'Status auslesen
	msgbox "Die Checkbox hat jetzt den Status: " & Myctrl
End Sub[
Schöne Grüsse.

Jürgen

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Fr, 08.08.2008 10:36

@Jürgen,

so an dieser Stelle ein riesen Lob und einen herzlichen Dank für die Hilfestellung. Soweit klappt jetzt alles. Die links sind überaus hilfreich.

Eine letzte Frage sei jedoch gestattet. Ich habe mir an einer Stelle überlegt, eine Wahlmöglichkeit einzubauen. Dafür habe ich jetzt im Dialogfeld 2 Optionsfelder eingebaut
Bild
Ist es irgendwie möglich die Antwort auf mein Dokument zu Übertragen? D.h. je nach dem welche Option ich anklicke soll ein Haken auf meinem Dokument erscheinen. Ich habe viel versucht, gelesen und gesucht, nichts gefunden wie ich das einstellen soll. Vielleicht hat jemand einen Link oder eine Idee...

Ach ja hier noch ein Bildausschnitt meines Dokuments
Bild

Grüße
Ibanez

Re: Eingabefeld auslesen und ändern mit inputbox

von ykcim » Mo, 04.08.2008 13:30

Hallo Jürgen,

http://www.starbasicfaq.de/mehrseitiger.html
http://www.ooowiki.de/MehrseitigeDialoge

Ein link von beiden langt. Steht bei beiden der gleiche Inhalt.

mfg
Michael

Re: Eingabefeld auslesen und ändern mit inputbox

von turtle47 » Mo, 04.08.2008 11:42

Ibanez hat geschrieben:gibt es die Möglichkeit mehrere Dialogfenster nacheinander einzublenden.
Ja, mit einem mehrseitigen Dialog.

http://www.starbasicfaq.de/mehrseitiger.html
http://www.ooowiki.de/MehrseitigeDialoge

Viel Erfolg.

Jürgen

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Mo, 04.08.2008 11:28

Hallo Jürgen,

nochmals vielen dank, habe den Fehler gefunden, war nur ein Buchstabendreher an einer Stelle es funktioniert jetzt.

Ein frage habe ich aber noch :) gibt es die Möglichkeit mehrere Dialogfenster nacheinander einzublenden. Momentan erscheint beim öffnen der Datei das Dlg_FB. Ich möchte nun z.B. danach dass eine Dlg_FB1 (was ich noch erstellen muss) weitere Sachen abfragt, wie z.B. Geburtsdaten oder andere persönliche Dinge, erscheint. Wie binde ich denn sowas dann ein?

Merci vielmals

Re: Eingabefeld auslesen und ändern mit inputbox

von turtle47 » Do, 31.07.2008 13:13

Zunächst fallen mir zwei Möglichkeiten ein.

1. Das Textfield mit dem Namen "TextField_NameV" existiert nicht in dem Dialog.
2. Der Dialog wird in einem anderen Modul aufgerufen und steht nicht zur Verfügung.
Abhilfe > Public MyDlg as Object

Hilft das weiter?

Jürgen

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Do, 31.07.2008 12:57

Es ist immer wichtig zu wissen an welcher Stelle die Fehlermeldung kommt.
Sorry, siehe Markierung

Sub Felbefehl_schreiben
oDoc = thisComponent

strUserfield_NameV = "NameV"
Ctl_Name = MyDlg.GetControl("TextField_NameV")
String_NameV = Ctl_Name.Model.Text
strContent_NameV = String_NameV

On Error Resume Next
oTextFieldMasters = oDoc.TextFieldMasters

TxtUserfield_NameV="com.sun.star.text.FieldMaster.User." + StrUserfield_NameV
oTextFieldMasters.getByName(TxtUserfield_NameV).content = StrContent_NameV

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

Re: Eingabefeld auslesen und ändern mit inputbox

von turtle47 » Do, 31.07.2008 12:18

Hi Ibanez,
Ibanez hat geschrieben:Fehlermeldung: "Basic-Laufzeitfehler. Objektvariable nicht belegt".
Es ist immer wichtig zu wissen an welcher Stelle die Fehlermeldung kommt.

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Do, 31.07.2008 11:39

Hallo Jürgen,

so jetzt bin ich soweit, dass ich nicht mehr weiter weiß.

Ich habe jetzt die Datei etwas verändert unter anderem habe ich im das Textfeld NameV benannt. Das ist wichtig, da es auch noch ein NameS geben soll. Das Problem ist, dass der Text perfekt ausgelesen wird, ich aber keinen entsprechenden Eintrag erhalte wenn ich es im Dialogfenster ändere. Das Problem liegt also im "Felbefehl_schreiben", aber wo?

Interessanterweise passiert der Fehler auch nur bei meinem Dokument. In Deinem Dokument funktioniert es.

Code: Alles auswählen

Dim MyDlg as Object
Dim String_NameV as String
Dim oDoc as Object
Dim oTextFieldMasters as Object
Dim TxtUserfield as String
Dim TxtName as String

Sub Dlg_FB
	Dialoglibraries.Loadlibrary("Standard")
	MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dlg_FB)
	Felbefehl_lesen

	Ctl_Name = MyDlg.GetControl("TextField_NameV")
		
	Ctl_Name.Model.Text = String_NameV
		
	Ctl_Name.setfocus()
	MyDlg.execute()
end Sub

Sub Felbefehl_lesen
	oDoc = thisComponent
	strUserfield_NameV = "NameV"
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
	TxtUserfield_NameV="com.sun.star.text.FieldMaster.User." + StrUserfield_NameV
	String_NameV=oTextFieldMasters.getByName(TxtUserfield_NameV).content
	
Sub Felbefehl_schreiben
	oDoc = thisComponent

	strUserfield_NameV = "NameV"    
	Ctl_Name = MyDlg.GetControl("TextField_NameV")
	String_NameV = Ctl_Name.Model.Text	
	strContent_NameV = String_NameV
	
	On Error Resume Next
	oTextFieldMasters = oDoc.TextFieldMasters
		
	TxtUserfield_NameV="com.sun.star.text.FieldMaster.User." + StrUserfield_NameV
	oTextFieldMasters.getByName(TxtUserfield_NameV).content = StrContent_NameV
	
	oDoc.getTextFields().refresh()
	MyDlg.endexecute()
End Sub
merci vielmals

Fehlermeldung: "Basic-Laufzeitfehler. Objektvariable nicht belegt".

Re: Eingabefeld auslesen und ändern mit inputbox

von Ibanez » Fr, 25.07.2008 17:57

Hi Jürgen, dass war der Denkanstoß den ich brauchte. Jetzt klappts, wenn auch etwas mühsam.

Wenn noch was unklar ist melde ich mich.

Grüße und vielen Dank
Ibanez

Nach oben