[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/privacyprotection/cron/task/anonymize_ip.php on line 83: A non-numeric value encountered
Inoffizielles deutsches Xbase-Forum • Probleme mit dsRadioButtons in 2 groups
Seite 1 von 1

Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 13:45
von Martin Altmann
Moin,
bin am Verzweifeln - ich kriege es ums Verrecken nicht hin!
Ich habe zwei Radiobuttons in einer Gruppe und drei in einer weiteren. Die zweite Gruppe darf nur aktiv sein, wenn der erste Radiobutton der ersten Gruppe ausgewählt ist:

Code: Alles auswählen

o vorhandene überschreiben
   o nur Buchungsdaten
   o alles außer Buchungsdaten
   o alle Daten überschreiben
o vorhandene überspringen
Wenn der untere angewählt ist, ist die innere Gruppe :disabled(). Wenn der erste angewählt ist, ist die innere Gruppe :enabled().
Das Problem dabei: Sobald ich in der inneren Gruppe auf einen Eintrag klicke, rast der Punkt in den drei RadioButtons unaufhörlich durch die drei Radiobuttons durch und hört nicht auf.
Ich habe natürlich zwei dsSettingGroup: Die innere enthält die drei dsRadiobuttons (diese haben sie als parent) und die äußere enthält die anderen beiden dsRadobuttons und die innere dsSettingGroup (diese drei Parts haben sie als parent).
Hat irgendeiner von euch ein solches Konstrukt erfolgreich am Laufen? Wo habe ich den Fehler gemacht?

Code: Alles auswählen

	::Static2      := dsSettingGroup():new( ::drawingArea, , {70,70}, {295,145} )
	::Static2:AutoAccelerator := .F.
	::Static2:EnableJump := .F.
	::Static2:clipSiblings := .T.
	::Static2:type:= XBPSTATIC_TYPE_BGNDFRAME

	::Radio1 := dsRadioButton():new( ::Static2,, {8,115}, {280,18} )
	::Radio1:caption := "~vorhandene Einlaufnummern überschreiben"
	::Radio1:Tooltip := "Bitte geben Sie an, ob bereits vorhandene Einlaufnummern überschrieben werden sollen!"
	::Radio1:selected  := {|| iif( eversion >= 6.4, ::Static3:enable(), ) }
	::Radio1:tabStop := .T.
	AAdd( ::editControls, ::Radio1 )

	::Static3      := dsSettingGroup():new( ::Static2, , {25,29}, {250,90} )
	::Static3:AutoAccelerator := .F.
	::Static3:EnableJump := .F.
	::Static3:clipSiblings := .T.
	::Static3:type:= XBPSTATIC_TYPE_BGNDFRAME

	::Radio2 := dsRadioButton():new( ::Static2,, {8,7}, {280,18} )
	::Radio2:caption := "vorhandene ~Einlaufnummern überspringen"
	::Radio2:Tooltip := "Bitte geben Sie an, ob bereits vorhandene Einlaufnummern übersprungen werden sollen!"
	::Radio2:selected  := {|| ::Static3:disable() }
	::Radio2:selection:= .T.
	::Radio2:tabStop := .T.
	AAdd( ::editControls, ::Radio2 )

	::Radio11 := dsRadioButton():new( ::Static3,, {8,54}, {230,18} )
	::Radio11:caption := "~alles außer Buchungsdaten überschreiben"
	::Radio11:Tooltip := "Bitte geben Sie an, ob bei bereits vorhandenen Einlaufnummern die Buchungsdaten nicht überschrieben werden sollen!"
	::Radio11:tabStop := .T.
	AAdd( ::editControls, ::Radio11 )

	::Radio12 := dsRadioButton():new( ::Static3,, {8,32}, {230,18} )
	::Radio12:caption := "~nur Buchungsdaten überschreiben"
	::Radio12:Tooltip := "Bitte geben Sie an, ob bei bereits vorhandenen Einlaufnummern nur die Buchungsdaten überschrieben werden sollen!"
	::Radio12:tabStop := .T.
	AAdd( ::editControls, ::Radio12 )

	::Radio13 := dsRadioButton():new( ::Static3,, {8,10}, {230,18} )
	::Radio13:caption := "alle ~Daten überschreiben"
	::Radio13:Tooltip := "Bitte geben Sie an, ob bereits vorhandene Einlaufnummern komplett überschrieben werden sollen!"
	::Radio13:selection:= .T.
	::Radio13:tabStop := .T.
	AAdd( ::editControls, ::Radio13 )
Viele Grüße,
Martin

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 14:14
von brandelh
Mit DS kenne ich mich nicht aus, aber ich würde beide SettingGroups auf der gleichen Ebene lassen.
Nur weil die erste die zweite auslöst, sollte sie nicht auch der Parent sein.

Parent Static Groupbox1
- Radio1 => enabled Groupbox2 mit RadioButtons, wobei zu klären ist, welcher eingeschaltet werden muss !
- Radio2

Parent Static Groupbox2
- Radio1
- Radio2
- Radio3

Bei Xbase pur muss ich eine Methode (Funktion) hinterlegen welche die Steuerung übernimmt, EINE Methode für ALLE ;-)

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 15:28
von Martin Altmann
Hubert,
eine Ebene geht leider nicht, da dann die erste Gruppe die zweite (innere) überdeckt, nachdem man einen der beiden oberen Radiobuttons angeklickt hat.

Viele Grüße,
Martin

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 16:11
von Tom
Ich nutze XClass nicht, vermute aber, dass es an einem Fehler in der Evaluierung liegt, wenn das Dialogmanagement herauszukriegen versucht, welche Elemente dis-/enabled werden müssen. Was geschieht, wenn Du die "innere Gruppe" mal testweise nach außen verlagerst?

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 16:17
von Martin Altmann
Nun,
das Problem habe ich nicht, wenn ich einen der äußeren Radiobuttons anklicke. Dann wird der parent der inneren Gruppe ordentlich enabled oder disabled. Das Problem habe ich, wenn ich in der enableden inneren Gruppe ein Radiobutton anwähle.

Viele Grüße,
Martin

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 17:25
von brandelh
achso, wenn du im abhängigen einen anklickst, werden nacheinander alle der gleichen inneren durchlaufen ?
Hast du den Quellcode ?

wo steht bei denen was von selected() ?

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Fr, 04. Apr 2014 17:59
von Martin Altmann
Moin,
brandelh hat geschrieben:achso, wenn du im abhängigen einen anklickst, werden nacheinander alle der gleichen inneren durchlaufen ?
ja.
brandelh hat geschrieben:Hast du den Quellcode ?
Habe ich doch oben gepostet...
brandelh hat geschrieben:wo steht bei denen was von selected() ?
Bei Radio1 und Radio2 steht das - Radio11-13 latürnich nicht.

Viele Grüße,
Martin

Re: Probleme mit dsRadioButtons in 2 groups

Verfasst: Sa, 05. Apr 2014 8:12
von brandelh
Martin Altmann hat geschrieben:Moin,
brandelh hat geschrieben:Hast du den Quellcode ?
Habe ich doch oben gepostet...
brandelh hat geschrieben:wo steht bei denen was von selected() ?
Bei Radio1 und Radio2 steht das - Radio11-13 latürnich nicht.
Viele Grüße,
Martin
Ich meinte den Quellcode der abgeleiteten Klasse, der sich darum kümmert, dass immer nur eines einer Gruppe aktiv ist, also den von ds...
Wenn du weder im selected noch im setfocus slot einen codeblock eingetragen hast, woher kommt dann das Wechseln ?
Normalerweise machen die ds... das doch nicht, genausowenig wie die originalen.

Entweder setzt ds... noch etwas bei der "Gruppenbestimmung" voraus, oder einer der focus oder der selected slot verursacht die Probleme ...
mehr fällt mir dazu nicht ein und mehr als raten kann ich auch nicht ;-)