Makro Dialog, Checkbox, Ausgewählte auslesen

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

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Makro Dialog, Checkbox, Ausgewählte auslesen

Beitrag von MikeRo »

Ich habe noch ein kleines Problem zu dem ich keine Lösung finde.

Ich habe einen Dialog mit mehreren Checkboxen und ich weiß auch wie ich deren Status abrufen kann. (Ausgewählt oder nicht)

Aber wie kann ich es bewerkstelligen. Das die Checkboxen, die ausgewählt wurden. in ein Array geladen werden oder ich benötige dieses Array, da ich eine Datenbankabfrage machen möchte und die eingetragenen Strings, nach und nach in einer Schleife verarbeitet werden. Im Moment habe ich es mit einer Listbox gelöst, aber für den User sind Checkboxen Bequemer...
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
katzenmann
Beiträge: 6
Registriert: Fr, 10.12.2010 18:28

Re: Makro Dialog, Checkbox, Ausgewählte auslesen

Beitrag von katzenmann »

@MikeRo,
kurzes Beispiel:
Du hast in der OOo-Datei in der Standardbibliothek einen Filterdialog, in dem der Anwender die Checkboxen "CheckBox0" .. "CheckBox3" mit den Labeln "Nord", "Süd", "Ost", "West" anklicken kann, um z. B. eine Kundentabelle über die Spalte 'Region' zu filtern. Die Label entsprechen den möglichen Werten von 'Region'.
Die Label, sofern aktiviert, sollen in ein Array übernommen werden. Das kann so aussehen...

Code: Alles auswählen

Sub CheckBoxFilter
	Dim oDialog as object, oCkeckBox as object
	Dim i as integer, iDlgOK as integer
	Dim aFilter(3) as string

	oDialog = CreateUnoDialog(DialogLibraries.Standard.FilterDialog)
	iDlgOK = oDialog.Execute()
	if iDlgOK = 1 then ' Ok-Button gedrueckt
		for i = 0 to 3
			oCkeckBox = oDialog.getControl("CheckBox" & i)
			if oCkeckBox.State = 1 then
				' Label der eingeschalteten Checkbox in Filter-Array kopieren
				aFilter(i) =  oCkeckBox.Model.Label
			end if
		next
	end if
	' ... SQL-String mit Filterbedingungen
	'  aus aFilter() zusammensetzen ...
End Sub
Übrigens: oCkeckBox.Model.Label entspricht dem Checkbox-Titel bei den (deutschen) Eigenschaften einer Checkbox.

War es das, was Du wissen wolltest?
Viel Erfolg wünscht katzenmann
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Makro Dialog, Checkbox, Ausgewählte auslesen

Beitrag von MikeRo »

Cool Danke!
Habe es hin bekommen, habe nur noch einen Fehler, wenn keine Checkbox ausgewählt wurde, bekomme ich bei meiner Fehlerabfrage einen Fehler.

Code: Alles auswählen

Sub SDialog
	DialogLibraries.LoadLibrary("Standard")
 	oDialog = createUnoDialog(DialogLibraries.Standard.SDialog)
	oDialog.execute()
End Sub

Sub CheckBoxFilter
      x = 0
      for i = 1 to 15
         oCkeckBox = oDialog.getControl("CheckBox" & i)
         If oCkeckBox.State = 1 Then
            ' Label der eingeschalteten Checkbox in Filter-Array kopieren
	        ReDim Preserve aQueries(x)
            aQueries(x) =  oCkeckBox.Model.Label
         x = x + 1
         End If
      Next
   ' ... SQL-String mit Filterbedingungen
   '  aus aFilter() zusammensetzen ...
   Call Start
End Sub

Sub Start
	for i=LBound(aQueries) to uBound(aQueries)
	next
	If i = 0 Then
	msgbox "Keine Liste Ausgewählt!", 0, "Fehler!"
    Else 
    Call Export
    End if
End Sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Makro Dialog, Checkbox, Ausgewählte auslesen

Beitrag von MikeRo »

Danke für die Hilfe, habe es gelöst. Manchmal hilft ein wenig Learing bei doing^^

Code: Alles auswählen

Sub CheckBoxFilter      
	aQueries = array()
	  x = 0
      for i = 1 to 15
         oCkeckBox = oDialog.getControl("CheckBox" & i)
         If oCkeckBox.State = 1 Then
	        ReDim Preserve aQueries(x)
            aQueries(x) =  oCkeckBox.Model.Label
         x = x + 1
         oCkeckBox.State = 0
         End If
      Next
   Call Start
End Sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten