rem Beginn
Dim myDialog as Object
Dim Opt_Btn_1_State as String
Dim Opt_Btn_2_State as String
Dim String_Name as String
Dim oDoc as Object
Dim Opt_Btn_1 as Object
Dim Opt_Btn_2 as Object
Dim TxtName as String
Sub Dlg_1
DialogLibraries.loadLibrary("Standard")
oForm = DialogLibraries.Standard.Dialog1
myDialog = CreateUnoDialog(oForm)
myDialog.title = "Options Button"
Opt_Btn_1 = myDialog.getControl("OptionButton1")
Opt_Btn_1.model.Label = "Auswahl1"
Opt_Btn_2 = myDialog.getControl("OptionButton2")
Opt_Btn_2.model.Label = "Auswahl2"
Read_Settings1
Ctl_Name1 = myDialog.GetControl("TextField_Name")
Ctl_Name1.Model.Text = String_Name
Ctl_Name1.setfocus()
myDialog.execute()
myDialog.Dispose()
End Sub
Sub Read_Settings1
oDoc = thisComponent
strUserfield_Name1 = "Name"
On Error Resume Next
oTextFieldMasters = oDoc.TextFieldMasters
TxtUserfield_Name = "com.sun.star.text.FieldMaster.User." + StrUserfield_Name1
String_Name = oTextFieldMasters.getByName(TxtUserfield_Name).content
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
CtrlCheckBox1 = oForm.getByName("CheckBox1")
CheckBox1_State=CtrlCheckBox1.state
CtrlCheckBox2 = oForm.getByName("CheckBox2")
CheckBox2_State=CtrlCheckBox2.state
if CheckBox1_State = 1 and CheckBox2_State = 1 Then
msgbox "Es sind zwei Auswahlmöglichkeiten markiert"& CHR(13)& "Bitte entscheiden sie sich nur für EINE AUSWAHL" ,48, "Grober Fehler!"
Exit sub
end if
if CheckBox1_State = 1 Then
Opt_Btn_1.State = 1
end if
if CheckBox2_State = 1 Then
Opt_Btn_2.State = 1
end if
End Sub
Sub Formularfelder_ansprechen1
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
CtrlCheckBox1 = oForm.getByName("CheckBox1")
CheckBox1_State=CtrlCheckBox1.state
oKView = oController.getControl(CtrlCheckBox1)
CtrlCheckBox2 = oForm.getByName("CheckBox2")
oKView = oController.getControl(CtrlCheckBox2)
Opt_Btn_1 = myDialog.getControl("OptionButton1")
Opt_Btn_1.State=Opt_Btn_1.state
Opt_Btn_2 = myDialog.getControl("OptionButton2")
Opt_Btn_2.State=Opt_Btn_2.state
if Opt_Btn_1.State = "True" then
CtrlCheckBox1.State= 1
CtrlCheckBox2.State= 0
else
CtrlCheckBox1.State= 0
CtrlCheckBox2.State= 1
end if
if Opt_Btn_1.State = "False" and Opt_Btn_2_State = "False" then
CtrlCheckBox1.State= 0
CtrlCheckBox2.State= 0
end if
myDialog.endexecute()
End Sub
Sub Felbefehl_schreiben1
oDoc = thisComponent
strUserfield_Name1 = "Name"
Ctl_Name1 = myDialog.GetControl("TextField_Name")
String_Name = Ctl_Name1.Model.Text
strContent_Name = String_Name
On Error Resume Next
oTextFieldMasters = oDoc.TextFieldMasters
TxtUserfield_Name="com.sun.star.text.FieldMaster.User." + StrUserfield_Name1
oTextFieldMasters.getByName(TxtUserfield_Name).content = StrContent_Name
oDoc.getTextFields().refresh()
myDialog.endexecute()
End Sub
rem Ende
Zuletzt geändert von Ibanez am Di, 16.09.2008 15:26, insgesamt 2-mal geändert.
Ibanez hat geschrieben:Zudem wollte ich über OptionsButtons gewisse Auswahlmöglichkeiten zulassen. Man soll also im Dialog zwischen 2 Optionen wählen. Diese Auswahl wird dann auf das Dokument übertragen
Das ist kein Problem.
Ibanez hat geschrieben:wo sich zwei CheckBoxen befinden
Das ist für mich unlogisch > CheckBox versus Optionsbutton
Ibanez hat geschrieben:dann sollte der Haken im Dialog erscheinen, d.h. an der Stelle an der er sich auf dem Dokument befindet
Das ist möglich mit CheckBoxen, bei OptionsButtons aber nur wenn in dem Dokument eine CheckBox ausgewählt ist!
Schau mal folgendes Beispiel und bau Dir was schönes zusammen.
Ich habe noch ein Textfeld eingefügt, dass man bei Auswahl 2 ausfüllen soll. Problem ist, dieses Textfeld wird beim Start des Dialogs nicht ausgelesen. Schreibe ich was hinein wird es sobald ich auch den "Zurück" button klicke und wieder auf den "Weiter" klicke sowohl auf dem Dokument, als auch im Dialog angezeigt. Speichere ich das Dokument, öffne es erneut und klicke weiter bis zu dem Dialog mit der besagten Abfrage, dann steht im Textfeld nichts mehr, wobei es auf dem Dokument noch zu sehen ist. Ich verstehe es nicht und sehe auch keinen Fehler.
Jemand eine Ahnung warum?
Ich benutze 2 Dialoge. Dlg_FB besteht nur aus Textfeldern, die vorher abgefragt werden. Dlg_P1 besteht aus den OptionsButton und einem Textfeld ("TextField_Name). Die Buttons "Zurück", "Weiter" und "Fertig" sind mit den Makros "cbBackP1", "cbForeP1" und "cmd_OKP1" belegt.
Dim myDialog as Object
Dim Opt_Btn_1_State as String
Dim Opt_Btn_2_State as String
Dim String_Name as String
Dim Opt_Btn_1 as Object
Dim Opt_Btn_2 as Object
Dim TxtName as String
Sub Dlg_P1
DialogLibraries.loadLibrary("Standard")
oForm = DialogLibraries.Standard.Dlg_P1
myDialog = CreateUnoDialog(oForm)
myDialog.title = "Options Button"
Opt_Btn_1 = myDialog.getControl("OptionButton1")
Opt_Btn_1.model.Label = "Auswahl1"
Opt_Btn_2 = myDialog.getControl("OptionButton2")
Opt_Btn_2.model.Label = "Auswahl2"
Ctl_Name = myDialog.GetControl("TextField_Name")
Ctl_Name.Model.Text = String_Name
Ctl_Name.setfocus()
Read_SettingsP1
myDialog.execute()
myDialog.Dispose()
End Sub
Sub Read_SettingsP1
oDoc = thisComponent
strUserfield_Mit = "Name"
On Error Resume Next
oTextFieldMasters = oDoc.TextFieldMasters
TxtUserfield_Name = "com.sun.star.text.FieldMaster.User." + StrUserfield_Name
String_NameMit = oTextFieldMasters.getByName(TxtUserfield_Name).content
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
CtrlCheckBox1 = oForm.getByName("CheckBox1")'Achtung: Namen anpassen
CheckBox1_State=CtrlCheckBox1.state
CtrlCheckBox2 = oForm.getByName("CheckBox2")'Achtung: Namen anpassen
CheckBox2_State=CtrlCheckBox2.state
if CheckBox1_State = 1 and CheckBox2_State = 1 Then
msgbox "Es sind zwei Checkboxen angewählt"& CHR(13)& "Welcher Optionsbutton soll denn jetzt angewählt werden?" ,48, "Grober Fehler!"
Exit sub
end if
if CheckBox1_State = 1 Then
Opt_Btn_1.State = 1
end if
if CheckBox2_State = 1 Then
Opt_Btn_2.State = 1
end if
End Sub
Sub Formularfelder_ansprechenP1
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
CtrlCheckBox1 = oForm.getByName("CheckBox1")'Achtung: Namen anpassen
CheckBox1_State=CtrlCheckBox1.state
oKView = oController.getControl(CtrlCheckBox1)
CtrlCheckBox2 = oForm.getByName("CheckBox2")'Achtung: Namen anpassen
oKView = oController.getControl(CtrlCheckBox2)
Opt_Btn_1 = myDialog.getControl("OptionButton1")
Opt_Btn_1_State=Opt_Btn_1.state
Opt_Btn_2 = myDialog.getControl("OptionButton2")
Opt_Btn_2_State=Opt_Btn_2.state
if Opt_Btn_1_State = "True" then
CtrlCheckBox1.State= 1
CtrlCheckBox2.State= 0
else
CtrlCheckBox1.State= 0
CtrlCheckBox2.State= 1
end if
if Opt_Btn_1_State = "False" and Opt_Btn_2_State = "False" then
CtrlCheckBox1.State= 0
CtrlCheckBox2.State= 0
end if
myDialog.endexecute()
End Sub
Sub Felbefehl_schreibenP1
oDoc = thisComponent
strUserfield_Name = "Name"
Ctl_Name = myDialog.GetControl("TextField_Name")
String_Name = Ctl_Name.Model.Text
strContent_Name = String_Name
On Error Resume Next
oTextFieldMasters = oDoc.TextFieldMasters
TxtUserfield_Name="com.sun.star.text.FieldMaster.User." + StrUserfield_Name
oTextFieldMasters.getByName(TxtUserfield_Name).content = StrContent_Name
oDoc.getTextFields().refresh()
myDialog.endexecute()
End Sub
sub schflaeche_cbBackP1
Felbefehl_schreibenP1
Dlg_FB4
End sub
Sub schflaeche_cbForeP1
Felbefehl_schreibenP1
Dlg_P1
Felbefehl_lesenP1
End sub
Sub schflaeche_cmd_okP1
Felbefehl_schreibenP1
Formularfelder_ansprechenP1
End Sub