[Makro] alle Options beim laden der Form zurücksetzen

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

Moderator: Moderatoren

Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

[Makro] alle Options beim laden der Form zurücksetzen

Beitrag von opiWahn »

Hallo,
wie erreiche ich, daß alle Options, wann immer die Form neu aufgerufen wird, auf ihren Defaultwert zurückgesetzt werden?
Per Default habe ich zu Beginn keine aktiviert oder Vorauswahl getroffen - dies MUSS der User aktiv selbst tun.
Wenn ich die Form alleredings neu lade, werden zwar ggf. Textboxen überschrieben (andere kann ich notfalls per Code leeren), aber die Options behalten ihren letzten Wert.
Und genau das möchte ich vermeiden.
Des weiteren müße ich prüfen, daß vor dem Speichern in jeder Optionsgruppe ein Wert ausgewählt wurde.

Code: Alles auswählen

' Globale Variablen für DB-Aktion
Dim Context, DB, Connection, QueryErg As Object
Dim DBName, sSQL As String
Dim Statement As Variant

' Globale Variablen für Objekte
Dim oForm as Object

' Globale Variablen für name.odt speichern
Dim datname, path, extension, odturl as String

' Globale Variablen für add-Aktion
dim document   as object
dim dispatcher as object

Sub Value_ANr
	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")
	
   		DBName = "REPARATUR"
		Context = createUnoService("com.sun.star.sdb.DatabaseContext")
		DB = Context.GetByName (DBName)
		Connection = DB.GetConnection ("","")
		sSql = "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(sSQL)
'		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))
'		oText12.text = trim(QueryErg.GetString(12))				
		Connection.Close()
End Sub

Sub Proof_Save
' prüfen auf korrekte Eingaben

' speicher unter name.odt
	oDoc = thisComponent
	oController = oDoc.getCurrentController()
	oform = odoc.drawpage.forms.getbyindex(0)
	oText3= oForm.getByName("o_name")

datname = oText3.text
path = "C:/Temp/"
extension = ".odt"
odturl = "file:///" + path + datname + extension
oDoc.storeToURL(odturl())
end Sub
Danke in Voraus und Grüße
opiWahn
Grüße
opiWahn
Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von opiWahn »

... ich hab mal das versucht, aber bis dahin eher erfolglos!

Code: Alles auswählen

'Options prüfen und ggf. zurücksetzen
	oDoc = thisComponent
	oForm = oDoc.Drawpage.forms(0)
	oStateOpt1 = oForm.getControl("optgrp1")
	   if oStateOpt1.state=true then
		  oStateOpt1.state=false
	   end if
so weit kann ich doch garnicht von der Lösung weg sein - oder?
Grüße
opiWahn
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von balu »

Hallo opiWahn,

nun, ich bin auch nicht der Makro-Cräck, aber eine ähnliche Situation habe ich auch und auch simpel gelöst. Okay, ich arbeite wohl mit einem Dialog, aber es müsste wohl auch bei dir funktionieren.

Als aller erstes hatte ich darauf geachtet, dass alle Optionsbutton eine *Durchgehende* Bezeichnung, besser gesagt Name, haben in der Art von OptionButton1 bis hin zu OptionButton19. Der Titel ist uninteressant.

Nun lasse ich eine kurze Schleife los.

Code: Alles auswählen

	For oDel = 1 to 19
	optbo = oDialog1.getControl("OptionButton" & oDel)
	optbo.model.State = false
	next oDel
Bei mir spielt es keine Rolle ob vor dem Schleifendurchlauf schon ein oder mehrere Optionsbutton aktiviert sind, oder nicht. Sie werden alle auf deaktiviert (false) gesetzt.

Ich hoffe ich konnte dir helfen :)

Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von opiWahn »

Hallo balu,

dank dir für den Tipp.
Habs mal so übernommen und angepasst, aber bei

Code: Alles auswählen

optbu = oDialog1.getControl("optgrp" & oDel)
steigt er aus und sagt mir, daß die Objektvariable nicht belegt ist?

Die Idee, das zurücksetzen des Status der 4 Gruppen (optgrp1-4) so zu lösen

Code: Alles auswählen

Sub ClearForms
	oForm = thisComponent.drawpage.forms.getbyindex(0)
   	For i = 1 to 4
   	optBuDel = oForm.getGroupByName("optgrp" & i)
   	optBuDel.state = 0
   	next i
end Sub
wird mir mit "argument len differ!" aus "... .IllegalArgumentException" quittiert :(
Grüße
opiWahn
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von Stephan »

Als aller erstes hatte ich darauf geachtet, dass alle Optionsbutton eine *Durchgehende* Bezeichnung, besser gesagt Name, haben in der Art von OptionButton1 bis hin zu OptionButton19.
Und was soll das bei einem DIALOG bewirken?

Optionsbuttons in einem Dialog gehören nur dann zu einer Gruppe wenn sie bezüglich des Tab-Index der Dialogsteuerelemente aufeinanderfolgrende Index-Nummern haben.


Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von Stephan »

opiWahn hat geschrieben:Hallo balu,

dank dir für den Tipp.
Habs mal so übernommen und angepasst, aber bei

Code: Alles auswählen

optbu = oDialog1.getControl("optgrp" & oDel)
steigt er aus und sagt mir, daß die Objektvariable nicht belegt ist?

Die Idee, das zurücksetzen des Status der 4 Gruppen (optgrp1-4) so zu lösen

Code: Alles auswählen

Sub ClearForms
	oForm = thisComponent.drawpage.forms.getbyindex(0)
   	For i = 1 to 4
   	optBuDel = oForm.getGroupByName("optgrp" & i)
   	optBuDel.state = 0
   	next i
end Sub
wird mir mit "argument len differ!" aus "... .IllegalArgumentException" quittiert :(
Um sinnvoll antworten zu können müßte man zuerst einmal wissen ob es sich denn nun um einen Dialog oder ein Formular geht, da Beides verschiedene Dinge sind und natürlich nicht wie Balu hier mutmaßt:
Okay, ich arbeite wohl mit einem Dialog, aber es müsste wohl auch bei dir funktionieren


Gruß
Stephan
Benutzeravatar
opiWahn
***
Beiträge: 91
Registriert: Mo, 21.03.2011 15:47
Wohnort: zw. KL und NW

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von opiWahn »

Hallo Stephan,

es geht hier um ein "Writer"Formular welches insgesamt 4 Optionsgruppen enthält. Die erste (optgrp1) hat 4 Auswahlmöglichkeiten (A,B,C,D), die 3 anderen (optgrp2 ... 4) haben jeweils 2 (z.B. ja/nein).
U.a. möchte ich erreichen, daß sich immer dann wenn das Formular neu aufgerufen wird (Button in der Symbolleiste) die letzten Eingaben "leeren", das Formular in einen "jungfräulichen" Zustand gebracht wird. Es sind also keinen Optionen mehr gesetzt. Das hat den Hintergrund, daß diese Optionen zu "Pflichtfelder"! werden sollen, die immer neu gesetzt werden müssen und darüber hinaus weitere Möglichkeiten im Formular davon abhängen. So muß z.B. im unteren Teil eine "Tabelle" ausgefüllt werden, wenn in der optgrp4 ein "ja" gewählt wurde.
"Hier liegt auch der der Hund" begraben zu dem vorherigen Thread, wo ich versuche den jeweiligen Status der Gruppen heraus zu finden.
Falls es ebenfalls wichtig sein sollte: Den Options habe ich innerhalb ihrer Gruppe die Werte 1-4 bzw. 1+2 zugewiesen (z.B. ist in optgrp3 und 4 das ja immer eine 1 und das Nein immer eine 2). Ich hab mir davon versprochen - später z.B. bei einer DB-gestützten Auswertung des Formulars, die Werte leichter zuordnen zu können.

Gruß
opiWahn
Grüße
opiWahn
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von balu »

Hallo opiWahn,

sorry das ich doch nicht helfen konnte.

Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von balu »

Hallo Stephan,

ja okay, hab ja wirklich noch nicht die Erfahrung, aber ich hatte halt gedacht das es funktionieren könnte. Und nein, ich hatte es vorher nicht getestet.
Und was soll das bei einem DIALOG bewirken?
Nun, da es hier ja darum geht alle Optionsbutton auf Null rückzusetzen, ist das doch ein funktionsfähiger Weg, zumindest in einem DIALOG. Und damit wir uns nicht missverstehen, ist doch ein Dialog das was man in der IDE erstellen kann. Oder nicht?
Das es in einem Formular so nicht geht, wusste ich halt nicht. Werd es mir aber merken.

Und so einen Dialog habe ich ja mittlerweile jetzt auch erstellt. Und ich hatte auch gesucht und überlegt wie ich dort meine Optionsbutton alle auf einmal rücksetzen kann. Das Ergebnis habe ich ja hier in meinem ersten Beitrag kund getan. Das funktioniert ohne Probleme.

Optionsbuttons in einem Dialog gehören nur dann zu einer Gruppe wenn sie bezüglich des Tab-Index der Dialogsteuerelemente aufeinanderfolgrende Index-Nummern haben.
Öhm sorry, aber kannst Du mir das noch mal etwas deutlicher erklären? Ich versteh nicht was Du damit sagst, beziehungsweise erklären willst. Besonders der Tab-Index ist mir fremd, da ich ihn nicht finde.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von Stephan »

es geht hier um ein "Writer"Formular welches insgesamt 4 Optionsgruppen enthält. Die erste (optgrp1) hat 4 Auswahlmöglichkeiten (A,B,C,D), die 3 anderen (optgrp2 ... 4) haben jeweils 2 (z.B. ja/nein).
U.a. möchte ich erreichen, daß sich immer dann wenn das Formular neu aufgerufen wird (Button in der Symbolleiste) die letzten Eingaben "leeren", das Formular in einen "jungfräulichen" Zustand gebracht wird. Es sind also keinen Optionen mehr gesetzt. Das hat den Hintergrund, daß diese Optionen zu "Pflichtfelder"! werden sollen, die immer neu gesetzt werden müssen und darüber hinaus weitere Möglichkeiten im Formular davon abhängen. So muß z.B. im unteren Teil eine "Tabelle" ausgefüllt werden, wenn in der optgrp4 ein "ja" gewählt wurde.
"Hier liegt auch der der Hund" begraben zu dem vorherigen Thread, wo ich versuche den jeweiligen Status der Gruppen heraus zu finden.
Falls es ebenfalls wichtig sein sollte: Den Options habe ich innerhalb ihrer Gruppe die Werte 1-4 bzw. 1+2 zugewiesen (z.B. ist in optgrp3 und 4 das ja immer eine 1 und das Nein immer eine 2). Ich hab mir davon versprochen - später z.B. bei einer DB-gestützten Auswertung des Formulars, die Werte leichter zuordnen zu können.

Setze die Eigenschaft .State für jeden Option-Button auf 0 (FALSE), dazu identifiziere die Option-Buttons z.B. anhand ihres Names oder anhand ihres Typs (falls tatsächlich alle Optionen-Buttons auf 0 zu setzen sind).

z.B.:

Code: Alles auswählen

	With ThisComponent.DrawPage.Forms.GetByName("Standard")
		For n = 0 to .Count - 1
			On Error Resume Next
			'wenn alle Optionsbuttons-Namen mit "Option" beginnen
			'If LEFT(.GetByIndex(n).RefValue, 6)  = "Option" Then
			'oder:
			'Typ des steuerelements prüfen
			If Right(.GetByIndex(n).ServiceName, 11) = "RadioButton" Then
				.GetByIndex(n).State = 0
			End If
		Next n
	End With
(in beiliegender Beispieldatei, mittels des grünen Buttons zu testen)


Gruß
Stephan
Dateianhänge
Option_auf_Formular.odt
(14.68 KiB) 53-mal heruntergeladen
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von Stephan »

ja okay, hab ja wirklich noch nicht die Erfahrung, aber ich hatte halt gedacht das es funktionieren könnte. Und nein, ich hatte es vorher nicht getestet.
Ich persönlich mache auch Fehler und ärgere mich über jeden Einzelnen, nur mutmaßen tue ich eigentlich sehr selten, wenn ich etwas nicht weiß schreibe ich nichts.
Wieder mal ist hier leider ein Thread entstanden der aus nicht hilfreichen Inhalten besteht und jeder der ihn später nicht bis zum Ende liest wird unnötiger WEise auf eine falsche Fährte geführt und ärgert sich über die vertane Zeit die er mit Probieren verbringt weil etwas nicht klappt was im Thread als Lösung steht.
Ja, ich weiß, derartige Kritik wird ja hier meist als unpassend betrachtet, nach dem Motto 'egal ob falsch, Hauptsache nett formuliert' ...
Nun, da es hier ja darum geht alle Optionsbutton auf Null rückzusetzen, ist das doch ein funktionsfähiger Weg, zumindest in einem DIALOG. Und damit wir uns nicht missverstehen, ist doch ein Dialog das was man in der IDE erstellen kann. Oder nicht?
Das es in einem Formular so nicht geht, wusste ich halt nicht. Werd es mir aber merken.

Und so einen Dialog habe ich ja mittlerweile jetzt auch erstellt. Und ich hatte auch gesucht und überlegt wie ich dort meine Optionsbutton alle auf einmal rücksetzen kann. Das Ergebnis habe ich ja hier in meinem ersten Beitrag kund getan. Das funktioniert ohne Probleme.
Und WAS hat das mit meiner Aussage, die Du zitierst ("Und was soll das bei einem DIALOG bewirken?") zu tun?
Ich hatte Folgendes zitiert:
Als aller erstes hatte ich darauf geachtet, dass alle Optionsbutton eine *Durchgehende* Bezeichnung, besser gesagt Name, haben in der Art von OptionButton1 bis hin zu OptionButton19.
und DARAUF bezog sich meine Anwort.

Öhm sorry, aber kannst Du mir das noch mal etwas deutlicher erklären?
Der in OOo verwendete Begriff ist "Aktivierungsreihenfolge", allgemein nennt man das landläufig "Tab-Index" weil die Aktivierungsreihenfolge die Reihenfolge ist in der die einzelnen Steuerelemente eines Dialogs mit der TAB-Taste aktiviert werden können.´

Diese "Aktivierungsreihenfolge" ist für jedes Steuerelement z.B. in dessen Eigenschaftsdialog über die Eigenschaften "Tabstop" (bestimmt ob das Steuerelement per TAB anspringbar ist, also sich in die Index-Reihenfolge einordnet) und "Aktivierungsreihenfolge" (bestimmt den konkreten Index für das Steuerelement) .




Gruß
Stephan
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von DPunch »

Aloha

Kann es sein, dass ihr beiden etwas aneinander vorbeiredet?

Der Einwurf von balu
Als aller erstes hatte ich darauf geachtet, dass alle Optionsbutton eine *Durchgehende* Bezeichnung, besser gesagt Name, haben in der Art von OptionButton1 bis hin zu OptionButton19.
hat doch rein gar nichts mit Aktivierungsreihenfolge bzw. Tab-Index und Gruppen zu tun.
Stephan hat geschrieben:Und was soll das bei einem DIALOG bewirken?
Vermutlich das, was es auch überall sonst bewirken soll. Nämlich, dass man die Kontrollelemente alle in einer Schleife per z.B.

Code: Alles auswählen

optbo = oDialog1.getControl("OptionButton" & Zählvariable)
ansprechen kann. Bei konsequenter Handhabung der Namensgebung geht das natürlich auch in einem Formular

Code: Alles auswählen

ThisComponent.DrawPage.Forms.GetByName("Standard").getByName("OptionButton" & Zählvariable)
Ich denke, balu wollte nur nochmal verschärft darauf hinweisen, dass die Namensgebung in diesem Fall eben essenziell ist.
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: [Makro] alle Options beim laden der Form zurücksetzen

Beitrag von balu »

Hallo
DPunch hat geschrieben: Kann es sein, dass ihr beiden etwas aneinander vorbeiredet?
Nicht ganz. Aus diversen Gesundheitlichen Gründen hatte ich mich nur nicht geschickt ausgedrückt.
DPunch hat geschrieben:
Stephan hat geschrieben:Und was soll das bei einem DIALOG bewirken?
Vermutlich das, was es auch überall sonst bewirken soll. Nämlich, dass man die Kontrollelemente alle in einer Schleife [...]
ansprechen kann. Bei konsequenter Handhabung der Namensgebung geht das natürlich auch in einem Formular

Ich denke, balu wollte nur nochmal verschärft darauf hinweisen, dass die Namensgebung in diesem Fall eben essenziell ist.
Ja, so in der Art wollte ich es eigentlich gesagt haben. Danke DPunch.
Aber ob es essenziell ist mag ich nicht beurteilen, da kommt es wohl auf die jeweilige Situation drauf an.


@Stephan
Danke für die Erklärung bezüglich "Tab-Index".


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten