Mit einer Combobox die andere steuern



  • Hi Zusammen!

    Ich habe mal wieder eine Herausforderung *g* 🙂 Vielleicht könnt ihr mir da helfen 🙂

    Ich habe ein kleines Projekt aufgebaut, welches ungefähr so aussieht (grafisch gesehen):

    "Topic1" |COMBOBOX_TOPIC1_1| |COMBOBOX_TOPIC1_2|
    "Topic2" |COMBOBOX_TOPIC2_1| |COMBOBOX_TOPIC2_2|
    "Topic3" |COMBOBOX_TOPIC3_1| |COMBOBOX_TOPIC3_2|
    "Topic4" |COMBOBOX_TOPIC4_1| |COMBOBOX_TOPIC4_2|

    In den Comboboxen sind je nach Topic zahlen von 1-?
    Bspw:
    COMBOBOX_TOPIC1_1 = 1-15
    COMBOBOX_TOPIC1_2 = 1-12
    ...

    Die 2. ComboBox dahinter ist immer genau so groß, wie die erste, da die beiden voneinander abhängig sind.

    Ich möchte das jetzt gerne so haben, dass wenn ich in COMBOBOX_TOPIC1_1 die "3" auswähle, der Startwert in COMBOBOX_TOPIC1_2 auf 3 gesetzt wird (1 + 2 sollen nun nicht mehr möglich sein, ausgewählt zu werden)

    Wenn allerdings COMBOBOX_TOPIC1_1 dann auf "10" gesetzt wird, dann soll COMBOBOX_TOPIC1_2 automatisch auch auf "10" hochgesetzt werden.
    Wenn COMBOBOX_TOPIC1_2 aber höher war, dann soll der Wert gleich bleiben.

    Ich hoffe, dass ich das so einigermaßen rüberbringen konnte. Das ganze war nicht so einfach zu erklären.

    Würde mich freuen, wenn mir hier Jemand helfen kann 🙂

    Viele liebe Grüße und Danke im Voraus,
    Antispy



  • füll doch die 2. combobox nach der auswahl der ersten entsprechend was als Auswahl möglich is, is doch für den user logischer als 100 deselectierte Einträge, aus den er jetzt noch die wählbaren aussuchen muß, also für mich als user währe es unlogisch wenn du die nichtwählbaren nicht wegnehmen würdest.

    Gruß



  • Hi CTecS,

    genau so meine ich, wie Du das nochmal beschrieben hast. Die Auswahlmöglichkeiten sollen entfernt werden! Dann hatte ich das zuvor in meiner Problembeschreibung etwas falsch beschrieben.

    Nur mein Problem ist nun, dass ich nicht genau weiß, wie ich die Items austauschen soll.
    Am liebsten würde ich das Ganze in eine Funktion packen, die ich mir folgendermaßen vorgestellt habe:

    Function levels(int combo1, int combo2){
    if(combo1>combo2){
    combo1 = combo2;
    // hier fehlt die Syntax, um in combo2 alle Items bis zu dem übergebenen Wert zu entfernen
    }
    if(combo1<=combo2)
    // hier soll nun der Wert vom combo2 = combo gesetzt werden un die darauf folgenden Werte wieder bis zum Ende
    }

    Hier weiß ich nun leider nicht, wo ich diese Funktion einbauen könnte und wie ich die Comboboxen genau ansprechen sollte.

    Ich wäre über VOrschläge sehr dankbar!! 🙂

    Viele liebe Grüße,
    Antispy


  • Mod

    Du bekommst einen CBN_SELCHANGE. Dafür lädst Du eben die nachfolgenden Boxen neu. Entweder löscht Du einfach die bestehenden Einträge, oder lädst die Gane Combo neu.



  • hmm..
    ich hatte es nun schon über "SelectedIndexChanged" versucht.
    Ich weiß hier aber nun leider nicht genau, wie ich den ausgewählten Wert der ComboBox auslese und als INT übergebe.. Hätte hier Jemand einen Beispielcode für mich?

    Du bekommst einen CBN_SELCHANGE. Dafür lädst Du eben die nachfolgenden Boxen neu. Entweder löscht Du einfach die bestehenden Einträge, oder lädst die Gane Combo neu.

    Ich arbeite leider noch nicht ganz so lange mit Visual Studio und bastel mich hier gerade etwas herein.. Könntest Du mir CBN_SELCHANGE erklären, was Du hiermit meinst?? Das wäre nett! 🙂

    Liebe Grüße,
    Antispy


  • Mod

    CBN_SELCHANGE schon mal in Google eingegeben? Das ist eine Meldung, die die ComboBox sendet, wenn der User eine Auswahl trifft.

    Mit CB_GETCURSEL (einer Nachricht, die man selber senden) bzw. CComboBox::GetCursel bekommst Du das ausgewählte Item.
    Auf CB_GET/SETITEMDATA (SetItemData/GetItemData) möchte ich Dich noch hinweisen, damit kann man prima Benutzerdaten zu einem Eintrag unterbringen.


Anmelden zum Antworten