Formular: via Checkbox die Values von Textfeldern ändern
Verfasst: Fr, 01.04.2011 21:20
Hallo,
hab mir vorgenommen mein Formular durch ein Komfortmerkmal zu erweitern.
Derzeit wird der Inhalt für bestimmte Textfelder nur aus einer DB gelesen, die Textfelder sind ReadOnly, Hintergrundfarbe weiss und ohne Rahmen.
Es soll nun mittels Aktivierung einer Checkbox (Standard ist: aus) je nach Modus (freie Eingabe o. Daten aus DB) folgende "Funktionen" realisiert werden:
a) Freie Eingabe: State (1), Checkbox an, Felder ggf. leeren, ReadOnly: false. BackGround: grau und Rahmen (2). Wird die Checkbox deaktiviert, bleibt die bisherige Eingabe bestehen und der alte (optische) Zustand wird wieder hergestellt. Die Textfelder sind wieder ReadOnly.
b) Daten kommen aus DB: der User entscheidet sich aktiv für die Änderung der gezogenen Daten in dem er die Checkbox aktiviert. Dann erfolgt das gleiche wie schon bei a), außer daß vorhandene Felder nicht gelöscht werden. Auch hier: Wird die Checkbox deaktiviert, bleibt die bisherige Eingabe bestehen und der alte (optische) Zustand wird wieder hergestellt. Die Textfelder sind wieder ReadOnly.
Bisher sieht das bei mir so aus, wobei ich schon vermute, daß das mit der Schleife so nicht funktioniert:
hab mir vorgenommen mein Formular durch ein Komfortmerkmal zu erweitern.
Derzeit wird der Inhalt für bestimmte Textfelder nur aus einer DB gelesen, die Textfelder sind ReadOnly, Hintergrundfarbe weiss und ohne Rahmen.
Es soll nun mittels Aktivierung einer Checkbox (Standard ist: aus) je nach Modus (freie Eingabe o. Daten aus DB) folgende "Funktionen" realisiert werden:
a) Freie Eingabe: State (1), Checkbox an, Felder ggf. leeren, ReadOnly: false. BackGround: grau und Rahmen (2). Wird die Checkbox deaktiviert, bleibt die bisherige Eingabe bestehen und der alte (optische) Zustand wird wieder hergestellt. Die Textfelder sind wieder ReadOnly.
b) Daten kommen aus DB: der User entscheidet sich aktiv für die Änderung der gezogenen Daten in dem er die Checkbox aktiviert. Dann erfolgt das gleiche wie schon bei a), außer daß vorhandene Felder nicht gelöscht werden. Auch hier: Wird die Checkbox deaktiviert, bleibt die bisherige Eingabe bestehen und der alte (optische) Zustand wird wieder hergestellt. Die Textfelder sind wieder ReadOnly.
Bisher sieht das bei mir so aus, wobei ich schon vermute, daß das mit der Schleife so nicht funktioniert:
Code: Alles auswählen
' Database
Dim Context As Object, DB As Object, Connection As Object, QueryErg As Object
Dim DBName As String, SQL As String
Dim Statement As Variant
' FormObjects
Dim oForm As Object
Dim aOpt1(), aOpt2(), aOpt3(), aOpt4()
Dim s1_1 As String, s1_2 As String, s2_1 As String, s2_2 As String, s3_1 As String, s3_2 As String, s4_1 As String, s4_2 As String
' ErrorProof
Dim grpfail1 As Variant, grpfail2 As Variant, grpfail3 As Variant, grpfail4 As Variant
Dim errormsg1 as String
' save odt/PDF
Dim datname As String, path As String, extension As String, odturl As String, pdfurl As String
' addForm
dim document as object
dim dispatcher as object
'--------------------------------------------------------------------------------------------- Baustelle!
'Sub clearForm
'end Sub
'--------------------------------------------------------------------------------------------- Teilbaustelle!
' Daten über Input aus DB ziehen
Sub Value_ANr
'clearForm
oANr = inputBox ("Auftragsnummer","Eingabe erforderlich","Bitte Auftragsnummer eingeben")
oForm = thisComponent.drawpage.forms.getbyindex(0)
' oText1 = oForm.getByName("auftnr")
oText2 = oForm.getByName("o_anrede")
oText3 = oForm.getByName("o_name")
oText4 = oForm.getByName("o_titel")
oText5 = oForm.getByName("o_strasse")
oText6 = oForm.getByName("o_ort")
oText7 = oForm.getByName("r_anrede")
oText8 = oForm.getByName("r_name")
oText9 = oForm.getByName("r_titel")
oText10 = oForm.getByName("r_strasse")
oText11 = oForm.getByName("r_ort")
oText12 = oForm.getByName("langtext")
oEdit = oForm.getByName("chk_edit")
DBName = "REPARATUR"
Context = createUnoService("com.sun.star.sdb.DatabaseContext")
DB = Context.GetByName (DBName)
Connection = DB.GetConnection ("","")
Sql = "SELECT `key`,`objekt_anrede`,`objekt_name`,`objekt_titel`,`objekt_strasse`,`objekt_ort`,`rechnung_anrede`,`rechnung_name`,`rechnung_titel`,`rechnung_strasse`,`rechnung_ort`,`langtext` FROM `REPARATUR` WHERE `key` = '"+oANr+"';"
Statement = Connection.CreateStatement
QueryErg = Statement.ExecuteQuery(SQL)
' oText1.text = trim(QueryErg.GetString(1))
oText2.text = trim(QueryErg.GetString(2))
oText3.text = trim(QueryErg.GetString(3))
oText4.text = trim(QueryErg.GetString(4))
oText5.text = trim(QueryErg.GetString(5))
oText6.text = trim(QueryErg.GetString(6))
oText7.text = trim(QueryErg.GetString(7))
oText8.text = trim(QueryErg.GetString(8))
oText9.text = trim(QueryErg.GetString(9))
oText10.text = trim(QueryErg.GetString(10))
oText11.text = trim(QueryErg.GetString(11))
TempText12 = trim(QueryErg.GetString(12))
oText12.text = Replace(TempText12, Chr(10)+ Chr(13), "")
Connection.Close()
if oEdit.state(1) then
for i = 2 to 11
oText(i).ReadOnly = false
oText(i).BackgroundColor = RGB(211,211,211)
oText(i).Border(2)
next i
end if
End Sub
'--------------------------------------------------------------------------------------------- Baustelle!
Sub freeInsert
' clearForm
oForm = thisComponent.drawpage.forms.getbyindex(0)
oEdit = oForm.getByName("chk_edit")
oEdit.enabled = true
for i = 2 to 11
oText(i).ReadOnly = false
oText(i).BackgroundColor = RGB(211,211,211)
oText(i).Border(2)
next i
End Sub