Abfrage von Radiogroup Optionen in Basic

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

Moderator: Moderatoren

gottfried-faass
Beiträge: 1
Registriert: Fr, 03.02.2006 20:39
Wohnort: Schwabach

Optionbuttons

Beitrag von gottfried-faass »

Der Beitrag kommt etwas verspätet.

Ich bin bei der Analyse des Bespiels "burger_factory" des SDK über die Behandlung von Objectboxen und Gruppierungen derselben gestoßen.

Ich hab das umgebaut, da es mir sehr umständlich erschien.

Ich hebe die Gruppierung der (3) Optionboxen auf, und gebe Ihnen individuelle Namen.
Jede ruft sein eigenes Minimakro auf und das gibt der eigentlichen Routine für die Option eine ID mit. Leider habe ich nicht herausfinden können, ob man Macroaufrufen gleich Parameter mitgeben kann, was natürlich noch sinnvoller wäre. (Weiß wer ob und wie ?)

Beispielcode
........

REM 3 Macros für 3 Optionsbuttons (beim Auslösen !!!)
SUB Age1 : call Age(1) : end sub
SUB Age2 : call Age(2) : end sub
SuB Age3 : call Age(3) : end sub

REM Gruppenbildung -> Setzt die jeweils nicht gewählten rück.

Function Age(ix as integer)
if ix <> 1 then : oForm.GetByName( "AgeRB1" ).State = 0 : end if
if ix <> 2 then : oForm.GetByName( "AgeRB2" ).State = 0 : end if
if ix <> 3 then : oForm.GetByName( "AgeRB3" ).State = 0 : end if

REM Hier kann man dann eine Routine aufrufen.
call tuwasmit(ix)

End function
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Lösung: Abfrage von Radiogroup Optionen in Basic

Beitrag von sarotti »

Hallo zusammen,

altes Thema - aus 2004 und 2006 der letzte Eintrag...trotzdem - für mich durchaus aktuell....!!!

Nachdem ich nach einigem probieren und etwas "fummeln" eine eigene Lösung gefunden habe, habe ich mal ins Forum geschaut und nach einer "eleganteren" Lösung gesucht. Obwohl ein paar Tage alt, ist hier der eine oder andere Ansatz, der zunächst vielversprechend war...

Naja, ich poste einfach mal meine Lösung, die unabhängig vom Namen des Optionsfeld die Gruppierfunkton des Optionsrahmens nutzt... dieser hat nämlich nicht nur die Aufgabe eines gestalterischen Elements...

Code: Alles auswählen

Sub Formular_Optionsfeld

oForm=ThisComponent.drawpage.forms.getByIndex(0)
oGruppe=oForm.getByName("GroupBox")               'das ist der Gruppierrahmen
for i =1 to oGruppe.parent.count-1                'die Elemente der Gruppe durchlaufen (ACHTUNG: GroupBox ist auch ein Element)
	oFeld=oForm.getByIndex(i)
	if oFeld.state=1 then                         'das merkierte Element hat State=1
		iWert=oFeld.RefValue                      'RefValue liefert den hinterlegten Referenzwert
		sLabel=oFeld.Label                        'Label ist die Benennung der Option
	end if
next

msgBox sLabel + ": "+iWert

end sub
...vielleicht hilfts ja dem einen oder anderen weiter...

Gruß sarotti
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Abfrage von Radiogroup Optionen in Basic

Beitrag von sarotti »

Hallo noch einmal,

Sorry, da hatte ich wohl einen kleinen Denkfehler. Der Gruppierrahmen ist tatsächlich nur "schmückendes Beiwerk". Jetzt aber der funktionierende Code zu Optionsfeldern:

Code: Alles auswählen

Sub Formular_Optionsfeld

oForm=ThisComponent.drawpage.forms.getByIndex(0)

sOptionName="RadioGroup1"                                           'so heißt das Element

for i =0 to oForm.count-1                                                'alle Elemente des Formulars durchlaufen
	oFeld=oForm.getByIndex(i)
	
	if oFeld.name=sOptionName then                         'bis der Name des Elementes mit sOptionName übereinstimmt
		
		if oFeld.state=1 then                                 'das merkierte Element hat State=1
			iWert=oFeld.RefValue                    'RefValue liefert den hinterlegten Referenzwert
			sLabel=oFeld.Label                        'angezeigter Name der Option
		end if
		
	end if
next
REM **** und die weitere Verarbeitung
msgBox sLabel + ": "+iWert

end sub
Gruss
sarotti
Benutzeravatar
oktobaer
***
Beiträge: 69
Registriert: So, 18.01.2009 23:19
Wohnort: bei Nürnberg

Re: Abfrage von Radiogroup Optionen in Basic

Beitrag von oktobaer »

Beitrag gelöscht, da es um OB's in Dialogen und nicht in Formularen ging...

Oktobaer
Zuletzt geändert von oktobaer am Fr, 27.02.2009 21:47, insgesamt 2-mal geändert.
Servus
Claus
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Abfrage von Radiogroup Optionen in Basic

Beitrag von Stephan »

Hoffe diese Ausführung hilft Euch etwas weiter...
zumindest gehört sie nicht zum Thema des Thredas, denn hier gehnts die ganze Zeit um Optionsbutton in Formularen und nicht in Basic-Dialogen und die Handhabung unterscheideet sich nunmal zwischen Formular und Dialog.



Gruß
Stephan
Benutzeravatar
oktobaer
***
Beiträge: 69
Registriert: So, 18.01.2009 23:19
Wohnort: bei Nürnberg

Re: Abfrage von Radiogroup Optionen in Basic

Beitrag von oktobaer »

... OK, Du hast Recht - im Betreff ist es aber allgemein beschrieben...

Habe Beitrag gelöscht!

Oktobaer
Servus
Claus
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Abfrage von Radiogroup Optionen in Basic

Beitrag von Stephan »

Nix für ungut!
Nö, so war das nicht gemeint, dann hätte ich ja den post in einen separaten Thread stellen können, ich fand das nur für spätere Leser ggf. etwas verwirrend und wollte das ein wenig 'kennzeichnen'


zumal:
Abschließend noch die Erkenntnis, dass später eingefügte Optionsfelder bei mir nie als "dazugehörend" erkannt wurden - evtl. kann das tatsächlich an der nicht fortlaufenden TAB-Reihenfolge liegen.
ja nun nur ein:
natürlich liegt es an der nicht vorhandenen Aufeinanderfolge bei der Tab-REihenfolge
verdient (das ist doch der relevante Unterschied zu Formularen, wo die Namen zählen)

und es wohl auch besser wäre die eigentlich bestimmende Eigenschaft .State (und nicht .hasfocus) zur Auswertung zu benutzen.



Gruß
Stephan
Antworten