Autovervollständigung



  • estartu_de schrieb:

    m_cbxHersteller ist im Prinzip eine CComboBox (eben meine eigene Combobox), also eine Controlvariable.

    Heisst nichts anderes, als dass sie eine eigene Klasse von CComboBox abgeleitet hat. Sieht man übrigens auch an dem Quellcode, den ich in meinem letzten Beitrag zitiert habe.

    Bitte in Zukunft die Antworten, die man dir gibt, etwas genauer lesen.



  • OK ihc hatte Gestern anscheinend nicht mehr die Konzentration, als ich mir das heute morgen angeschaut hab, hba ich mir gleich gedacht oh Gott was macht der da! Naja, jetzt hab ich es hin bekommen!

    Tow-B.de schrieb:

    die Auswahl des Benutzer kannst du dann ganz einfach nach nem UpdateData aus dem CString auslesen.

    also wie ich jetzt die Auswahl bekomme ist mir noch nicht ganz klar, kann mir das einer noch mal ganz einfach erklären? Ich hab das jetzt mal so gemacht.

    CDBVariant varValue;
    	UpdateData(TRUE);
    	short nFields = m_pSet->GetODBCFieldCount();
    	for( short index = 0; index < nFields; index++ )
    	          {
    			m_pSet->MoveFirst();
    			while (!m_pSet->IsEOF())
    			{
    				m_pSet->GetFieldValue( index, varValue );
    
    				m_PCD_CMB.AddString(*(varValue.m_pstring));
    
    				m_pSet->MoveNext();
    			}
    		}
    	UpdateData(FALSE);
    
    }
    


  • Du machst einfach zusätzlich zur Controlvariablen noch eine Wertevariable (CString) an die Combobox.



  • wie mach ich die bitte an die Combobox? Denn im DataExchange kann ich mit

    DDX_CBIndex(pDX, IDC_COMBO1, m_test);
    

    eine int Variable anlegen, aber wie mache ich eine String Variable? So wie ich das mache geht das glaub net!



  • War aber fast richtig, du hast nur das falsche DDX genommen.

    Nimm DDX_TEXT:

    DDX_Text(pDX, IDC_COMBO1, m_test);
    

    Da hast das VC7? Ist das so grausig, dass man sogar DDX von Hand machen muss? *grusel* 😮
    Ich dachte, ich wär blos zu unflexibel dafür... 🙄



  • hm OK ich dachte ich könne jetzt dann einfach den String nehmen in dem ich

    CComboBox * combo;                                                
    	combo = (CComboBox *) GetDlgItem(IDC_COMBO1);
    	m_Selected = combo->GetCurSel();
    	UpdateData(FALSE);
    

    mache, aber da steht dann in m_Selected meinemum Combo assozierten String immer nur so ein doofer Strich drin!

    Wie greif ich jetzt richtig und elegant drauf zu, und ist es sinnig über OnKillFocus das zu machen??



  • Ähm, du hast aber schon ein Tutorial zu Dialogelementen und den Zugriff darauf angeguckt, oder? 😮

    m_Selected ist ein CString? Warum weist du ihm dann bitte eine Zahl zu? 🙄

    m_Selected = combo->GetCurSel();
    

    Mach UpdateData(TRUE); und DANACH steht in dem String der gewählte Text. 🙂
    GetCurSel brauchst du dann nur noch, falls nix ausgewählt ist, als Fehlerüberprüfung - wobei ich vermute, dass dann ein Leerstring geliefert wird.



  • He He OK ich gib zu ich hatte nicht viel dazu gemacht aber ich hab ein Tut angescaut aber anscheinend nicht genug, hab es jetzt mal angeschaut und des geht ja tatsächlich! Wie schön! Nur einen kleinen Fehler hast auch du gemacht es muss heißen UpdateData(TRUE); nicht False!

    Wenn ich jetzt auf nen Button mache

    UpdateData(TRUE);
    	m_Suche = m_Selected;
    	UpdateData(FALSE);
    

    steht in beiden Members das richtige drin, mach ich das aber da,

    void CDokumentenVerwaltungView::OnSelchangeCombo1()
    

    dann geht es nicht, dann hab ich in beiden ein leerstring, woran liegt das??



  • Ups, mein Lieblingsfehler... 🙄 *korrigier*

    UpdateData funktioniert in OnSelchange nicht. Da musst du was anderes machen.
    Das ist auch der Grund, warum ich es gar nicht nutze. Ich arbeite mit ItemData.

    Versuch mal GetWindowText im OnSelchange. 🙂



  • *doppelpost* 🙄


Anmelden zum Antworten