problem mit combobox



  • hallo,
    habe mal folgendes problem.

    erstellt wurde eine combobox mit dem resourceditor von vc++ ( unter w2k ) welche mit firmennamen aus einer datenbank gefüllt wird.

    wird nun eine andere firma ausgewählt sollen dessen informationen im formular etwas unter der combox sofort geändert werden.

    ich habe CB_selchange und noche in paar andere message ausprobiert aber irgendwie immer das gleich problem !

    wähle ich firma a aus werden dessen daten auch angezeigt. nun wähle ich firma b aus -> es werden noch immer die daten von firma a angezeigt -> wähle ich firma c -> dann die daten von firma b -> immer so weiter...

    es wird immer das letzte verwendet statt dem aktuellen !

    hat jemand einen tipp ?
    wäre sehr freundlich 😃



  • Ein bißchen Code wäre hilfreich!



  • mhh , was genau möchtest du den ?
    mein code ist sehr gross 🙂



  • Liegt es vielleicht daran, dass du verkennst, dass der erste Eintrag in der ComboBox den Index 0 und nicht 1 hat?



  • Du liest dann mit CB_GETCURSEL die aktuelle Auswahl ein?
    Also zeig mal den Code, wie du auf CBN_SELCHANGE reagierst mit der Ausgabe der Daten 🙄



  • ok, werd mal paar mehr infos preis geben 🙂

    auf cbn_selchange reagiere ich wie folgt:

    case WM_COMMAND:
                switch( HIWORD( wParam ) )
                {               
                    case CBN_SELCHANGE:
                        KundeFelderFuellen( hWnd );
                        return TRUE;
                }
                return TRUE;
    

    die funktion kundefelderfuellen() holt sich dann den text aus der combobox und schickt eine abfrage ( sql ) ab und füllt dann damit die felder ( name , tele , fax , etc... )

    GetWindowText( GetDlgItem( hWnd , IDC_KuFirmenname ) , szFirma , sizeof( szFirma ) );
        wsprintf( szBuffer , "SELECT * FROM Kundendaten WHERE KuFirmenname = '%s'",szFirma );
    


  • Versuch mal statt GetWindowText den Text mit CB_GETCURSEL und anschließend CB_GETLBTEXT zu bekommen - ansonsten kA 🙄 😉



  • klasse felnders, grosse danke 🙂
    klappt !! 😃 😃
    habs nun so:

    nIndex = SendMessage( GetDlgItem( hWnd , IDC_KuFirmenname ) , CB_GETCURSEL , 0 , 0 );
        SendMessage( GetDlgItem( hWnd , IDC_KuFirmenname ) , CB_GETLBTEXT , nIndex , (LPARAM)szFirma );
        wsprintf( szBuffer , "SELECT * FROM Kundendaten WHERE KuFirmenname = '%s'",szFirma );
    

Anmelden zum Antworten