[gelöst] CheckBox aus Dialog ins Dokument übertragen

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

Moderator: Moderatoren

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

[gelöst] CheckBox aus Dialog ins Dokument übertragen

Beitrag von Ibanez »

Habe so was ähnliches schon mal gefargt, da ging es aber um Optionsbuttuns. Das Problem habe ich mit Jürgens tatkräftiger Unterstützung nun gelöst. Hänge aber nun an einem scheinbar einfacheren Problem :( bekomm es aber nicht hin.

Erklärung:
Ich habe ein Diaolgfenster (Abb.1) zusammengebaut bestehend feststehenden Textfeldern ("Patient"), variablen Textfeldern ("Nr.") und Checkboxen ("getestet"). In einem Dokument (Abb.2) habe ich ein Abbild dieses Dialogfensters. Da nicht jeder Patient getestet wird muss nicht hinter jeder Nr. ein Haken gesetzt werden. Kann aber. D.h. es jede CheckBox stellt in sich einen Ja/Nein auswahl dar. Je nachdem sind also alle Checkboxen mit Haken versehen, keine oder 1 (wie im Beispiel) oder 2, oder oder oder

Problem:
Egal was ich bisher angestellt habe, ich bekomme es nicht hin den Haken im Dialogfenster an die entsprechende Stelle im Dokument zu übertragen (im Beispiel hinter Patient 789123), geschweige denn überhaupt einen haken. Ich kann zwar im Dialog alles anklicken und der Haken erscheint, bestätige ich das ganze, erscheint jedoch kein Haken in der/den Checkbox(en) auf dem Dokument. Hoffe man versteht was ich meine :shock:

Bild
Abb.1
Bild
Abb.2
Zuletzt geändert von Ibanez am Mo, 29.09.2008 15:58, insgesamt 1-mal geändert.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: CheckBox aus Dialog ins Dokument übertragen

Beitrag von turtle47 »

Hi Ibanez,
Ibanez hat geschrieben:bekomm es aber nicht hin
hast Du denn mal die Suchfunktion des Forums befragt? :wink:
Es ist noch gar nicht so lange her, da wurde das Thema schon einmal behandelt, sogar mit einer Beispieldatei. :lol:

Viel Erfolg.

Jürgen
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: CheckBox aus Dialog ins Dokument übertragen

Beitrag von Ibanez »

Oh mann Jürgen,

wenn ich Dich nicht hätte. Du wirst lachen, aber ich habe mir die Beispieldatei sogar heruntergeladen. Bin mal gespannt wie ich das für mein Problem nutzen kann.

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

Re: CheckBox aus Dialog ins Dokument übertragen

Beitrag von Ibanez »

So jetzt habe ichs zumindestens geschafft, dass er die CheckBoxen im Formular ausliest. Zum besseren verständnis hier mein Code:

Code: Alles auswählen

Dim myDialog as Object
Dim Ckb_9_State as String
Dim Ckb_10_State as String
Dim Ckb_11_State as String
Dim Ckb_12_State as String

Dim oDoc as Object
Dim Ckb_9 as Object
Dim Ckb_10 as Object
Dim Ckb_11 as Object
Dim Ckb_12 as Object

Sub Dlg_Prot3
	DialogLibraries.loadLibrary("Standard") 
	oForm = DialogLibraries.Standard.Dlg_Prot3
	myDialog = CreateUnoDialog(oForm)
	myDialog.title = "Tests"
	Ckb_9 = myDialog.getControl("CB9")
	Ckb_9.model.Label = "getestet"
	Ckb_10 = myDialog.getControl("CB10")
	Ckb_10.model.Label = "getestet"
	Ckb_11 = myDialog.getControl("CB11")
	Ckb_11.model.Label = "getestet"
	Ckb_12 = myDialog.getControl("CB12")
	Ckb_12.model.Label = "getestet"

	Read_Settings3
	
	myDialog.execute()	
	myDialog.Dispose()
End Sub

Sub Read_Settings3
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)
	Myctrl= oKView.model.State 
	CtrlCheckBox9 = oForm.getByName("CheckBox9")
	CheckBox9_State=CtrlCheckBox9.state
	CtrlCheckBox10 = oForm.getByName("CheckBox10")
	CheckBox10_State=CtrlCheckBox10.state
	CtrlCheckBox11 = oForm.getByName("CheckBox11")
	CheckBox11_State=CtrlCheckBox11.state
	CtrlCheckBox12 = oForm.getByName("CheckBox12")
	CheckBox12_State=CtrlCheckBox12.state
	if CheckBox9_State = 1 Then
	Ckb_9.State = 1
	end if
	if CheckBox10_State = 1 Then
	Ckb_10.State = 1
	end if
	if CheckBox11_State = 1 Then
	Ckb_11.State = 1
	end if
	if CheckBox12_State = 1 Then
	Ckb_12.State = 1
	end if
End Sub
Was nicht klapt, ist das die Änderungen, die ich im Dialog vornehme auf das Dokument übertragen werden. Irgendeine Idee wie ich das machen kann?

Code: Alles auswählen

Sub Formularfelder_ansprechen3
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)	
	CtrlCheckBox9 = oForm.getByName("CheckBox9")
	CheckBox9_State=CtrlCheckBox9.state
	oKView = oController.getControl(CtrlCheckBox9)
	CtrlCheckBox10 = oForm.getByName("CheckBox10")
	oKView = oController.getControl(CtrlCheckBox10)
	CtrlCheckBox11 = oForm.getByName("CheckBox11")
	oKView = oController.getControl(CtrlCheckBox11)
	CtrlCheckBox12 = oForm.getByName("CheckBox12")
	oKView = oController.getControl(CtrlCheckBox12)
	Ckb_9 = myDialog.getControl("CB9")
	Ckb_9_State=Ckb_9.state
	Ckb_10 = myDialog.getControl("CB10")
	Ckb_10_State=Ckb_10.state	
	Ckb_11 = myDialog.getControl("CB11")
	Ckb_11_State=Ckb_11.state
	Ckb_12 = myDialog.getControl("CB12")
	Ckb_12_State=Ckb_12.state
	if Ckb_9_State = "True" then
	CtrlCheckBox9.State= 1
	End if
	if Ckb_10_State = "True" then
	CtrlCheckBox10.State= 1
	End if
	if Ckb_11_State = "True" then
	CtrlCheckBox11.State= 1
	End if
	if Ckb_12_State = "True" then
	CtrlCheckBox12.State= 1
	End if

	myDialog.endexecute()	
End Sub
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: CheckBox aus Dialog ins Dokument übertragen

Beitrag von turtle47 »

Ibanez hat geschrieben:Irgendeine Idee wie ich das machen kann?
Ja, aber auf jeden Fall nicht so kompliziert. :wink:
Aber wahrscheinlich hat dich das genannte Beispiel auch etwas verwirrt. :?

Hier mal ein Beispiel mit zwei CheckBoxen.
Checkbox_ansprechen.odt
(10.77 KiB) 162-mal heruntergeladen
Viel Erfolg.

Jürgen
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
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: CheckBox aus Dialog ins Dokument übertragen

Beitrag von hawe »

Hallo Jürgen,

mal schnell zwischen gefragt:
CtrlCheckBox9 = oForm.getByName("CheckBox9")
CheckBox9_State=CtrlCheckBox9.state
oKView = oController.getControl(CtrlCheckBox9)
Was bewirkt die Zuweisung an okView?
Wozu der Zwischenschritt den Status in Variable_State abzulegen?
Meine Denke würde das etwa so formulieren wollen

Code: Alles auswählen

CtrlCheckBox9 = oForm.getByName("CheckBox9")
Ckb_9 = myDialog.getControl("CB9")
CtrlCheckBox9.State = - (Ckb_9.State = "True")
(ohne das jetzt konkret mal getestet zu haben) wäre dagegen was einzuwenden?
Gruss HW
Win7/SuSe 11.2 - LO 3.3
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: CheckBox aus Dialog ins Dokument übertragen

Beitrag von turtle47 »

hawe hat geschrieben:(ohne das jetzt konkret mal getestet zu haben) wäre dagegen was einzuwenden?
Dann teste es doch mal und Du wirst merken, dass sich Basic teilweise etwas zickig verhält.

Ich bin auch kein Spezialist auf diesem Gebiet und kann Dir manche Dinge auch nicht erklären.

Sicherlich kann man den Code anders aufbauen, was ich in dem angefügten Beispiel auch getan habe.

Code: Alles auswählen

Dim myDialog ,oDoc,oform as Object

Sub Dlg_Prot31
	DialogLibraries.loadLibrary("Standard")
	oForm = DialogLibraries.Standard.Dialog1
	myDialog = CreateUnoDialog(oForm)
	myDialog.title = "Tests"
	for i = 9 to 10 'CheckBox 9 bis 10 (entsprechend erweitern)
	Ckb = myDialog.getControl("CB" & i)
	Ckb.Label = "getestet"
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)
	CtrlCheckBox = oForm.getByName("CheckBox" & i) 'CeckBox im Formular ansprechen
	CheckBox_State = CtrlCheckBox.state	'Status auslesen
	Ckb.state = CheckBox_State 'Status Checkbox aus Formular im Dialog setzen
	next i
	myDialog.execute()
End Sub

Sub CB_Doc_Setzen
	for i = 9 to 10 'CheckBox 9 bis 10 (entsprechend erweitern)
	Ckb = myDialog.getControl("CB" & i) 'CeckBox-Status im Dialog ansprechen
	myState= Ckb.state 'CeckBox Status im Dialog auslesen
	CtrlCheckBox = oForm.getByName("CheckBox" & i)'CeckBox im Formular ansprechen
	CtrlCheckBox.state = myState 'Status CeckBox im Formular setzen
	next i
	myDialog.endexecute()
End Sub
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: CheckBox aus Dialog ins Dokument übertragen

Beitrag von Ibanez »

turtle47 hat geschrieben: Ich bin auch kein Spezialist auf diesem Gebiet und kann Dir manche Dinge auch nicht erklären.
:lol:
turtle47 hat geschrieben: Sicherlich kann man den Code anders aufbauen, was ich in dem angefügten Beispiel auch getan habe.
Der Code funktioniert! Ich bin sehr dankbar, du Nicht-Spezialist...

Grüße
Ibanez
Antworten