Abfrage von Radiogroup Optionen in Basic
Moderator: Moderatoren
-
- Beiträge: 1
- Registriert: Fr, 03.02.2006 20:39
- Wohnort: Schwabach
Optionbuttons
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
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
Lösung: Abfrage von Radiogroup Optionen in Basic
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...
...vielleicht hilfts ja dem einen oder anderen weiter...
Gruß sarotti
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
Gruß sarotti
Re: Abfrage von Radiogroup Optionen in Basic
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:
Gruss
sarotti
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
sarotti
Re: Abfrage von Radiogroup Optionen in Basic
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
Claus
Re: Abfrage von Radiogroup Optionen in Basic
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.Hoffe diese Ausführung hilft Euch etwas weiter...
Gruß
Stephan
Re: Abfrage von Radiogroup Optionen in Basic
... OK, Du hast Recht - im Betreff ist es aber allgemein beschrieben...
Habe Beitrag gelöscht!
Oktobaer
Habe Beitrag gelöscht!
Oktobaer
Servus
Claus
Claus
Re: Abfrage von Radiogroup Optionen in Basic
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'Nix für ungut!
zumal:
ja nun nur ein: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.
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