Seite 1 von 1

ComboBoxen - Abhängigkeit untereinander

Verfasst: Do, 27. Okt 2022 14:59
von Lutz Rübe
Moin alle zusammen,
ich komme mal wieder nicht weiter. Für euch als Profis ist das sicherlich eine Kleinigkeit, aber für mich tun sich da mal wieder Berge auf.. :roll:

Hier mein Problem/Frage:
Ich habe 2 Comboboxen, die beide für sich einwandfrei funktionieren. Jetzt möchte ich aber die Auswahlliste (Array) der 2. Combobox vom Ergebnis der ersten ComboBox abhängig machen. Als Beispiel:

in der Box 1 habe ich die Auswahl "Woche", "Monat", "Jahr"

In der Box 2 soll die Auswahl in Abhängigket von Box 1 gewählt werden:
Wenn Box 1 = "Woche", dann Auswahl-Array in Box 2: "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag","Sonntag"
Wenn Box 1 = "Monat", dann Auswahl-Array in Box 2: "Jan","Feb","Mar"....... "Dez"
Wenn Box 1 = "Jahr", Dann Auswahl-Array in Box 2: "2015","2016","2017"........

Wie binde ich diese unterschiedlichen Auswahl-Arrays in die Xbase-Parts ein ? Ich will also nicht nach der Auswahl in Box 1 eine neue Funktion aufrufen, die in Abhängigkeit des Ergebnisses aus Box 1 eine neue ComboBox möglichst noch in einen neuen fenster erstellt erstellt.

vielen Dank im Voraus...
Lutz

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Fr, 28. Okt 2022 11:55
von AUGE_OHR
hi Lutz,
Lutz Rübe hat geschrieben: Do, 27. Okt 2022 14:59 Ich will also nicht nach der Auswahl in Box 1 eine neue Funktion aufrufen, die in Abhängigkeit des Ergebnisses aus Box 1 eine neue ComboBox möglichst noch in einen neuen fenster erstellt erstellt.
ich bin mir nicht sicher wie das gehen soll denn ich benötige die erste Auswahl für die nächste Aktion

---

warum "einfach" wenn es "kompliziert" geht

du machst 3 x die 2nd Combobox() "versteckt" (o:Hide()) und eine "leere" als Dummy()
nach Auswahl in der 1st ComboBox() wird die "entsprechende" 2nd Combobox() "gezeigt" (o:Show())

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Fr, 28. Okt 2022 12:20
von Wolfgang Ciriack
Du kannst auch im ITEMMARKED Block der 1. CB eine Funktion aufrufen, die dir den Inhalt der 2. CB jedesmal neu setzt.

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Fr, 28. Okt 2022 16:38
von nightcrawler
Ist ja im Prinzip ein Master/Detail Problem.

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Fr, 28. Okt 2022 16:56
von Tom
Ich würde die erste Auswahl nicht über eine Combobox, sondern über eine Gruppe von Radiobuttons machen, aber das ist Kosmetik.

Jimmys Vorschlag (drei überlagerte Comboboxen, und je nach Auswahl - ItemMarked - in der ersten werden die falschen versteckt und die richtige angezeigt) ist bestechend einfach, aber eleganter ist es tatsächlich, die Items für die abhängige Box jeweils neu zuzuordnen, wenn sich die Auswahl in der ersten ändert. Auch das macht man über den ItemMarked-Slot der ersten Combobox.

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Fr, 28. Okt 2022 20:18
von Lutz Rübe
Moin alle zusammen und vielen Dank für eure Antworten.

Nachdem ich gesehen habe, dass viele mein Ansinnen gelesen haben und keine Antwort kam, dachte ich schon, meine Frage wäre so banal, dass man mir nicht antworten wollte. Tatsache aber ist, wie ich aus den Antworten sehe, dass es auch für euch kein "daily business" ist und etwas Nachdenken erfordert.

Ich bin ein "try-and-error"-Programmierer, der vieles ausprobiert. In der Zwischenzeit habe ich einen Weg gefunden, der mit einem Vorschlag von euch übereinstimmt:
Es ist der Aufruf einer Funktion im ItemSelected Block der 1. ComboBox, der erst die Variable auswertet und dann auch die 2. ComboBox erstellt.

Code: Alles auswählen

   oCombo_Team := XbpComboBox():new(drawingArea, , {120,150-(nAnzElem_Teams*30)}, {100,nAnzElem_Teams*30}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } })
   oCombo_Team:tabstop := .T.
   oCombo_Team:type    := XBPCOMBO_DROPDOWNLIST
   oCombo_Team:create()
   ArrayToListBox(oCombo_Team, aTeams)
   oCombo_Team:XbpSLE:dataLink := {|x| IIf( x==NIL, ergTeam, ergTeam := x ) }
   oCombo_Team:XbpSLE:setData()
   bAction := {|mp1, mp2, obj| ergTage := Sel_aTage(obj:XbpSLE:getData(),ergTage, drawingArea)}
   oCombo_Team:ItemMarked  := bAction
   oCombo_Team:ItemSelected := bAction
Die RadioButton-Variante finde ich aus Design-Gründen nicht so gut, da auch die 1. Listbox Elemente enthält, die variabel sind, also mal ein Element, zwei, drei oder vier. Die RadioButtons würden das Fenster immer unterschiedlich darstellen. Die "hide()"-Variante erscheint mir etwas umständlicher, aber ich würde sie sicherlich auch ausprobieren, wenn ich nicht schon die ItemSelected Variante gefunden hätte.

Vielen Dank für eure Hilfe... =D> =D> =D>

Re: ComboBoxen - Abhängigkeit untereinander

Verfasst: Sa, 29. Okt 2022 2:05
von AUGE_OHR
hi Lutz,

in deinem Beispiel sind es ja nur "wenige" Einträge die man schnell löschen/hinzufügen kann.

aber wenn man "viele" Einträge hat sollte man es "versteckt" aufbauen denn das "füllen" bei einem "sichtbaren" Control "dauert" viel länger