RadioButton? [erledigt]
Moderator: Moderatoren
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 484
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
RadioButton? [erledigt]
Hallo,
ich stehe momentan wieder mal auf dem Schlauch.
Ich habe 3 Radio Buttons. Wie kann ich elegant auslesen bzw. wie die ausgewählte Caption in einer Funktion weiterverarbeiten? Problemstellung -> ich möchte aus 3 Rechnungsarten eine auswählen und diese Information mit anderen Daten in einer Funktion per Pushbutton (STORE_Rechnungsart(xxx)) weiterverarbeiten bzw. die Caption in der DB speichern.
In der Beschreibung vom RadioButton Objekt ist ein ähnliches Beispiel. Hier wird die Caption mit "bSelected := {|mp1,mp2,obj| QOut( obj:caption ) }" ausgelesen. Ich habe testweise aus QOut -> MsgBox probiert und bekomme hier auch brav die Caption vom selektierten RadioButton. Wie kann ich jetzt damit weiterarbeiten? Vom Typ (VALTYP(bselected) ist das ein B -> Codeblock. Sagt mir aber nix ...
Beste Grüße
Wolfgang
ich stehe momentan wieder mal auf dem Schlauch.
Ich habe 3 Radio Buttons. Wie kann ich elegant auslesen bzw. wie die ausgewählte Caption in einer Funktion weiterverarbeiten? Problemstellung -> ich möchte aus 3 Rechnungsarten eine auswählen und diese Information mit anderen Daten in einer Funktion per Pushbutton (STORE_Rechnungsart(xxx)) weiterverarbeiten bzw. die Caption in der DB speichern.
In der Beschreibung vom RadioButton Objekt ist ein ähnliches Beispiel. Hier wird die Caption mit "bSelected := {|mp1,mp2,obj| QOut( obj:caption ) }" ausgelesen. Ich habe testweise aus QOut -> MsgBox probiert und bekomme hier auch brav die Caption vom selektierten RadioButton. Wie kann ich jetzt damit weiterarbeiten? Vom Typ (VALTYP(bselected) ist das ein B -> Codeblock. Sagt mir aber nix ...
Beste Grüße
Wolfgang
Zuletzt geändert von Wolfgang_B am Mi, 15. Feb 2017 9:13, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: RadioButton?
Wie wäre es z.B. mit einer If-Schleife
Code: Alles auswählen
if radio1:getData()
mach_das()
elseif radio2:getData()
mach_dies()
else
mach_sonstwas()
endif
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: RadioButton?
hi,
Es kann nur ein Radiobutton aktive sein.
leider wird das nicht automatisch geregelt d.h. man muss selbst dafür sorgen das die anderen nicht aktive sind.
---
XbpRadioButton() sollten, als Gruppe, den selben Parent haben z.b. Static-GroupBox
den o:selected Callback Slot würde ich so aufbauen
bei Verwendung der DXE LIB kann man auch solche Radio / 3-State Buttons machen
Radiobutton treten üblicherweise in einer Group auf.Wolfgang_B hat geschrieben:Ich habe 3 Radio Buttons. Wie kann ich elegant auslesen bzw. wie die ausgewählte Caption in einer Funktion weiterverarbeiten?
Es kann nur ein Radiobutton aktive sein.
leider wird das nicht automatisch geregelt d.h. man muss selbst dafür sorgen das die anderen nicht aktive sind.
---
XbpRadioButton() sollten, als Gruppe, den selben Parent haben z.b. Static-GroupBox
den o:selected Callback Slot würde ich so aufbauen
Code: Alles auswählen
// jedes XbpRadioButton()
o:selected := {| lCheck, uNIL, oSelf | cCaption := CheckRadio(oSelf,oParent),;
IF(!EMPTY(cCaption), MachWeiter(cCaption),NIL) }
FUNCTION CheckRadio(oSelf,oParent)
LOCAL aChild := oParent:Childlist()
LOCAL i,iMax
LOCAL cCaption := ""
iMax := LEN(aChild)
FOR i := 1 TO iMax
IF aChild[i] = oSelf
aChild[i]:SetData(.T.)
cCaption := aChild[i]:Caption
ELSE
aChild[i]:SetData(.F.)
ENDIF
NEXT
RETURN cCaption
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: RadioButton?
Auch wenn das im Beispiel so angezeigt wird (caption zur Anzeige wer aktiviert wurde),
im normalen Programm sollte man keine Verzweigung nach der Caption auswählen, spätestens wenn ein Kunde eine anderssprachige Version will hat man ein Problem.
Oder man muss die Beschriftung ändern ...
Als Anzeige in einer msgbox("Sie haben "+oRB:caption+" gewählt !") ist das natürlich was anderes.
so kann man einen "Rückgabewert" festlegen und später im Programm prüfen ob "E" oder "A" zurückgegeben wurde, nach einem Select (mit der Maus).
du solltest die Grundlagen über Eventgesteuerte Programmierung lesen (Hilfe).
Die VARIABLE des Objekts wird mit einem Codeblock bestückt, der ausgeführt wird, nachdem ein Event (Maus selectiert den RB) ausgelöst wurde.
Falls man selbst einen codeblock auswerten möchte, kann man Eval(bBlock) => Rückgabewert nutzen.
im normalen Programm sollte man keine Verzweigung nach der Caption auswählen, spätestens wenn ein Kunde eine anderssprachige Version will hat man ein Problem.
Oder man muss die Beschriftung ändern ...
Als Anzeige in einer msgbox("Sie haben "+oRB:caption+" gewählt !") ist das natürlich was anderes.
Code: Alles auswählen
oRB_Ein:Selected := {|mp1,mp2,obj| "E" }
oRB_Aus:Selected := {|mp1,mp2,obj| "A" }
Code: Alles auswählen
bekomme hier auch brav die Caption vom selektierten RadioButton. Wie kann ich jetzt damit weiterarbeiten?
Vom Typ (VALTYP(bselected) ist das ein B -> Codeblock. Sagt mir aber nix ...
Die VARIABLE des Objekts wird mit einem Codeblock bestückt, der ausgeführt wird, nachdem ein Event (Maus selectiert den RB) ausgelöst wurde.
Falls man selbst einen codeblock auswerten möchte, kann man Eval(bBlock) => Rückgabewert nutzen.
Gruß
Hubert
Hubert
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: RadioButton?
Hallo Wolfgang
ich mache das so. Hier wähle ich aus "alle Saison" oder Saison von 1-9 diese information steht in einem Array
In der weiteren Ausdruckfuntion wird so ausgewertet:
funktioniert tadellos - vielleicht hiflt es dir
ich mache das so. Hier wähle ich aus "alle Saison" oder Saison von 1-9 diese information steht in einem Array
Code: Alles auswählen
bSelected := {|mp1,mp2,obj| aFelder[6][2]:=obj:caption }
oXbp := XbpRadiobutton():new( drawingArea, , {020,220}, {100,20} )
oXbp:caption := aFelder[6][1]
oXbp:tabStop := .T.
oXbp:setInputFocus:={ || HiliteSle( oXbp ) }
oXbp:selected:=bSelected
oXbp:create()
oXbp:setdata(.t.)
oXbp:killInputFocus:={ || DeHiliteSle( oXbp ) }
oStatic := XbpStatic():new( drawingArea,, {150,220}, {50,20} )
oStatic:options := XBPSTATIC_TEXT_LEFT
oStatic:caption := "oder"
oStatic:create()
aPos:={230,220}
For i = 1 to 9
oXbp := XbpRadiobutton():new( oDlg, , aPos, {40,20} )
oXbp:caption := strzero(i,1)
oXbp:tabStop := .T.
oXbp:setInputFocus:={ || HiliteSle( oXbp ) }
oXbp:selected:=bSelected
oXbp:create()
oXbp:killInputFocus:={ || DeHiliteSle( oXbp ) }
aPos[01]+=50
Next i
Code: Alles auswählen
If aFelder[6][2]="Alle Saison"
cSaison:=aFelder[6][1]
lSai:=.f.
Else
cSaison:="Saison: "+aFelder[6][2]
lSai:=.t.
EndIf
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 484
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Re: RadioButton?
Hallo Kollegen,
herzlichen Dank für die Tipps,
ich habe mich für die Version von Rolf entschieden. Merci Rolf. Quick and dirty, funktioniert aber einwandfrei. Man muß allerdings die Situation abfangen, wenn nichts angeklickt wird und die Standardeinstellung übernommen wird. In diesem Fall wird sonst NIL zurückgegeben.
@Hubert - Du hast recht, das Studium theoretischer Grundlagen wären bestimmt hilfreich. Ein Selbststudium fällt mir aufgrund der spärlichen Dokumentation bzw. Literatur von Xbase++ allerdings sehr schwer. Ich werde mich aber redlich weiter bemühen
Beste Grüße
Wolfgang
herzlichen Dank für die Tipps,
ich habe mich für die Version von Rolf entschieden. Merci Rolf. Quick and dirty, funktioniert aber einwandfrei. Man muß allerdings die Situation abfangen, wenn nichts angeklickt wird und die Standardeinstellung übernommen wird. In diesem Fall wird sonst NIL zurückgegeben.
@Hubert - Du hast recht, das Studium theoretischer Grundlagen wären bestimmt hilfreich. Ein Selbststudium fällt mir aufgrund der spärlichen Dokumentation bzw. Literatur von Xbase++ allerdings sehr schwer. Ich werde mich aber redlich weiter bemühen
Beste Grüße
Wolfgang
Beste Grüße
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück