von opiWahn » Mi, 20.04.2011 16:44
hallo,
auf einen Formular prüfe ich diverse Options (da Pflichtfelder) ab, welche dann in bestimmte Aktionen münden.
Meine Frage, da ich immer noch ein ziemliches Greenhorn in Sachen Ooo-Basic bin: Wie lassen sich diese 4 Subs zusammenfassen und/oder vereinfachen?
Zu 2/3 passiert ja immer das gleiche! Am Schluss fasse ich alle 4 zusammen und rufe diese dann auf, um das Formular auf seine "Gültigkeit" zu prüfen.
Ideal wäre es, dies so mit den Speichern-Routinen zu verbinden, daß ein Speichern erst möglich ist wenn die Bedingungen (keine Fehler) erfüllt sind.
Code: Alles auswählen
' FormObjects
Dim oForm As Object
Dim aField(16), aText(83), aOrder(23), aWorkHrs(83)
Dim aOpt1(), aOpt2(), aOpt3(), aOpt4()
Dim TempText$
Dim s1_1$, s1_2$, s2_1$, s2_2$, s3_1$, s3_2$, s4_1$, s4_2$
' ErrorProof
Dim vGrpFail
Dim errormsg1$
' save odt/PDF
Dim datname$, path$, extension$, odturl$, pdfurl$
...
Sub proofOptGrp1
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp1", aOpt1)
vGrpFail = oForm.getbyName("grp1_fail")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt1) to UBound(aOpt1)
thisElement = aOpt1(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s1_1 = thisElement.Name
s1_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected Then
vGrpFail.text = ""
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp2
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp2", aOpt2)
vGrpFail = oForm.getbyName("grp2_fail")
aWorkHrs() = Array ("txt_Name1","num_StdMoName1","num_StdDiName1","num_StdMiName1","num_StdDoName1", _
"num_StdFrName1","num_StdSaName1","num_StdSoName1","num_StdAzGesName1","num_StdFzGesName1", _
"txt_Name2","num_StdMoName2","num_StdDiName2","num_StdMiName2","num_StdDoName2","num_StdFrName2", _
"num_StdSaName2","num_StdSoName2","num_StdAzGesName2","num_StdFzGesName2", _
"txt_Name3","num_StdMoName3","num_StdDiName3","num_StdMiName3","num_StdDoName3","num_StdFrName3", _
"num_StdSaName3","num_StdSoName3","num_StdAzGesName3","num_StdFzGesName3", _
"txt_Name4","num_StdMoName4","num_StdDiName4","num_StdMiName4","num_StdDoName4","num_StdFrName4", _
"num_StdSaName4","num_StdSoName4","num_StdAzGesName4","num_StdFzGesName4", _
"txt_Name5","num_StdMoName5","num_StdDiName5","num_StdMiName5","num_StdDoName5","num_StdFrName5", _
"num_StdSaName5","num_StdSoName5","num_StdAzGesName5","num_StdFzGesName5", _
"txt_Name6","num_StdMoName6","num_StdDiName6","num_StdMiName6","num_StdDoName6","num_StdFrName6", _
"num_StdSaName6","num_StdSoName6","num_StdAzGesName6","num_StdFzGesName6", _
"txt_Name7","num_StdMoName7","num_StdDiName7","num_StdMiName7","num_StdDoName7","num_StdFrName7", _
"num_StdSaName7","num_StdSoName7","num_StdAzGesName7","num_StdFzGesName7", _
"txt_Name8","num_StdMoName8","num_StdDiName8","num_StdMiName8","num_StdDoName8","num_StdFrName8", _
"num_StdSaName8","num_StdSoName8","num_StdAzGesName8","num_StdFzGesName8", _
"num_KM","num_U25","num_U50","num_U100")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt2) to UBound(aOpt2)
thisElement = aOpt2(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s2_1 = thisElement.Name
s2_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected And s2_2 = "Lohnnachweis" Then
vGrpFail.text = ""
MsgBox "Einträge in den roten Feldern" & CHR$(10) & "sind zwingend erforderlich", 0+48, "Achtung"
for i = 0 to 83
aText(i) = oForm.getByName(aWorkHrs(i))
aText(i).ReadOnly = false
aText(i).BackgroundColor = RGB(255,119,119)
next i
Elseif bSelected And s2_2 = "zum Festpreis" Then
vGrpFail.text = ""
for i = 0 to 83
aText(i) = oForm.getByName(aWorkHrs(i))
aText(i).ReadOnly = true
aText(i).BackgroundColor = RGB(255,255,255)
next i
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp3
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp3", aOpt3)
vGrpFail = oForm.getbyName("grp3_fail")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt3) to UBound(aOpt3)
thisElement = aOpt3(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s3_1 = thisElement.Name
s3_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected Then
vGrpFail.text = ""
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp4
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp4", aOpt4)
vGrpFail = oForm.getbyName("grp4_fail")
aOrder() = Array ("txt_ArtNr1","txt_ArtBez1","num_ArtAnz1","txt_ArtNr2","txt_ArtBez2","num_ArtAnz2","txt_ArtNr3","txt_ArtBez3","num_ArtAnz3", _
"txt_ArtNr4","txt_ArtBez4","num_ArtAnz4","txt_ArtNr5","txt_ArtBez5","num_ArtAnz5","txt_ArtNr6","txt_ArtBez6","num_ArtAnz6", _
"txt_ArtNr7","txt_ArtBez7","num_ArtAnz7","txt_ArtNr8","txt_ArtBez8","num_ArtAnz8")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt4) to UBound(aOpt4)
thisElement = aOpt4(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s4_1 = thisElement.Name
s4_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected And s4_2 = "Ja" Then
vGrpFail.text = ""
MsgBox "Einträge in den roten Feldern" & CHR$(10) & "sind zwingend erforderlich", 0+48, "Achtung"
for i = 0 to 23
aText(i) = oForm.getByName(aOrder(i))
aText(i).ReadOnly = false
aText(i).BackgroundColor = RGB(255,119,119)
next i
Elseif bSelected And s4_2 = "Nein" Then
vGrpFail.text = ""
for i = 0 to 23
aText(i) = oForm.getByName(aOrder(i))
aText(i).ReadOnly = true
aText(i).BackgroundColor = RGB(255,255,255)
next i
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofAllOptGrp
proofOptGrp1
proofOptGrp2
proofOptGrp3
proofOptGrp4
End Sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub Save_as_ODT
proofAllOptGrp
oform = thisComponent.drawpage.forms.getbyindex(0)
aText = oForm.getByName("txt_oName")
if aText.text = "" then
datname = "blanc"
else
datname = aText.text
end if
path = "C:/xyz/Auftraege/"
extension = ".odt"
odturl = "file:///" + path + datname + extension
thisComponent.storeToURL(odturl, Array())
End Sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub Save_as_PDF
proofAllOptGrp
oform = thisComponent.drawpage.forms.getbyindex(0)
aText = oForm.getByName("txt_oName")
if aText.text = "" then
datname = "blanc"
else
datname = aText.text
end if
path = "C:/xyz/Auftraege/PDF/"
extension = ".pdf"
pdfurl = "file:///" + path + datname + extension
dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
thisComponent.storeToURL(pdfurl, pdfProperties())
End Sub
hallo,
auf einen Formular prüfe ich diverse Options (da Pflichtfelder) ab, welche dann in bestimmte Aktionen münden.
Meine Frage, da ich immer noch ein ziemliches Greenhorn in Sachen Ooo-Basic bin: Wie lassen sich diese 4 Subs zusammenfassen und/oder vereinfachen?
Zu 2/3 passiert ja immer das gleiche! Am Schluss fasse ich alle 4 zusammen und rufe diese dann auf, um das Formular auf seine "Gültigkeit" zu prüfen.
Ideal wäre es, dies so mit den Speichern-Routinen zu verbinden, daß ein Speichern erst möglich ist wenn die Bedingungen (keine Fehler) erfüllt sind.
[code]
' FormObjects
Dim oForm As Object
Dim aField(16), aText(83), aOrder(23), aWorkHrs(83)
Dim aOpt1(), aOpt2(), aOpt3(), aOpt4()
Dim TempText$
Dim s1_1$, s1_2$, s2_1$, s2_2$, s3_1$, s3_2$, s4_1$, s4_2$
' ErrorProof
Dim vGrpFail
Dim errormsg1$
' save odt/PDF
Dim datname$, path$, extension$, odturl$, pdfurl$
...
Sub proofOptGrp1
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp1", aOpt1)
vGrpFail = oForm.getbyName("grp1_fail")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt1) to UBound(aOpt1)
thisElement = aOpt1(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s1_1 = thisElement.Name
s1_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected Then
vGrpFail.text = ""
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp2
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp2", aOpt2)
vGrpFail = oForm.getbyName("grp2_fail")
aWorkHrs() = Array ("txt_Name1","num_StdMoName1","num_StdDiName1","num_StdMiName1","num_StdDoName1", _
"num_StdFrName1","num_StdSaName1","num_StdSoName1","num_StdAzGesName1","num_StdFzGesName1", _
"txt_Name2","num_StdMoName2","num_StdDiName2","num_StdMiName2","num_StdDoName2","num_StdFrName2", _
"num_StdSaName2","num_StdSoName2","num_StdAzGesName2","num_StdFzGesName2", _
"txt_Name3","num_StdMoName3","num_StdDiName3","num_StdMiName3","num_StdDoName3","num_StdFrName3", _
"num_StdSaName3","num_StdSoName3","num_StdAzGesName3","num_StdFzGesName3", _
"txt_Name4","num_StdMoName4","num_StdDiName4","num_StdMiName4","num_StdDoName4","num_StdFrName4", _
"num_StdSaName4","num_StdSoName4","num_StdAzGesName4","num_StdFzGesName4", _
"txt_Name5","num_StdMoName5","num_StdDiName5","num_StdMiName5","num_StdDoName5","num_StdFrName5", _
"num_StdSaName5","num_StdSoName5","num_StdAzGesName5","num_StdFzGesName5", _
"txt_Name6","num_StdMoName6","num_StdDiName6","num_StdMiName6","num_StdDoName6","num_StdFrName6", _
"num_StdSaName6","num_StdSoName6","num_StdAzGesName6","num_StdFzGesName6", _
"txt_Name7","num_StdMoName7","num_StdDiName7","num_StdMiName7","num_StdDoName7","num_StdFrName7", _
"num_StdSaName7","num_StdSoName7","num_StdAzGesName7","num_StdFzGesName7", _
"txt_Name8","num_StdMoName8","num_StdDiName8","num_StdMiName8","num_StdDoName8","num_StdFrName8", _
"num_StdSaName8","num_StdSoName8","num_StdAzGesName8","num_StdFzGesName8", _
"num_KM","num_U25","num_U50","num_U100")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt2) to UBound(aOpt2)
thisElement = aOpt2(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s2_1 = thisElement.Name
s2_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected And s2_2 = "Lohnnachweis" Then
vGrpFail.text = ""
MsgBox "Einträge in den roten Feldern" & CHR$(10) & "sind zwingend erforderlich", 0+48, "Achtung"
for i = 0 to 83
aText(i) = oForm.getByName(aWorkHrs(i))
aText(i).ReadOnly = false
aText(i).BackgroundColor = RGB(255,119,119)
next i
Elseif bSelected And s2_2 = "zum Festpreis" Then
vGrpFail.text = ""
for i = 0 to 83
aText(i) = oForm.getByName(aWorkHrs(i))
aText(i).ReadOnly = true
aText(i).BackgroundColor = RGB(255,255,255)
next i
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp3
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp3", aOpt3)
vGrpFail = oForm.getbyName("grp3_fail")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt3) to UBound(aOpt3)
thisElement = aOpt3(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s3_1 = thisElement.Name
s3_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected Then
vGrpFail.text = ""
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofOptGrp4
oForm = thisComponent.drawpage.forms.getbyindex(0)
oForm.getGroupByName("opt_grp4", aOpt4)
vGrpFail = oForm.getbyName("grp4_fail")
aOrder() = Array ("txt_ArtNr1","txt_ArtBez1","num_ArtAnz1","txt_ArtNr2","txt_ArtBez2","num_ArtAnz2","txt_ArtNr3","txt_ArtBez3","num_ArtAnz3", _
"txt_ArtNr4","txt_ArtBez4","num_ArtAnz4","txt_ArtNr5","txt_ArtBez5","num_ArtAnz5","txt_ArtNr6","txt_ArtBez6","num_ArtAnz6", _
"txt_ArtNr7","txt_ArtBez7","num_ArtAnz7","txt_ArtNr8","txt_ArtBez8","num_ArtAnz8")
errormsg1 = "In der markierten Optionsgruppe liegt ein Fehler vor" & CHR$(10) & "BITTE PRÜFEN!"
bSelected = False
For i = LBound(aOpt4) to UBound(aOpt4)
thisElement = aOpt4(i)
If thisElement.ServiceName = "stardiv.one.form.component.RadioButton" Then
If thisElement.State Then
bSelected = True
s4_1 = thisElement.Name
s4_2 = thisElement.Label
Exit For
End If
End If
Next i
If bSelected And s4_2 = "Ja" Then
vGrpFail.text = ""
MsgBox "Einträge in den roten Feldern" & CHR$(10) & "sind zwingend erforderlich", 0+48, "Achtung"
for i = 0 to 23
aText(i) = oForm.getByName(aOrder(i))
aText(i).ReadOnly = false
aText(i).BackgroundColor = RGB(255,119,119)
next i
Elseif bSelected And s4_2 = "Nein" Then
vGrpFail.text = ""
for i = 0 to 23
aText(i) = oForm.getByName(aOrder(i))
aText(i).ReadOnly = true
aText(i).BackgroundColor = RGB(255,255,255)
next i
Else
vGrpFail.text = "!"
MsgBox errormsg1, 0+48, "Achtung"
End If
end sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub proofAllOptGrp
proofOptGrp1
proofOptGrp2
proofOptGrp3
proofOptGrp4
End Sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub Save_as_ODT
proofAllOptGrp
oform = thisComponent.drawpage.forms.getbyindex(0)
aText = oForm.getByName("txt_oName")
if aText.text = "" then
datname = "blanc"
else
datname = aText.text
end if
path = "C:/xyz/Auftraege/"
extension = ".odt"
odturl = "file:///" + path + datname + extension
thisComponent.storeToURL(odturl, Array())
End Sub
'--------------------------------------------------------------------------------------------- funktioniert
Sub Save_as_PDF
proofAllOptGrp
oform = thisComponent.drawpage.forms.getbyindex(0)
aText = oForm.getByName("txt_oName")
if aText.text = "" then
datname = "blanc"
else
datname = aText.text
end if
path = "C:/xyz/Auftraege/PDF/"
extension = ".pdf"
pdfurl = "file:///" + path + datname + extension
dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
thisComponent.storeToURL(pdfurl, pdfProperties())
End Sub
[/code]