Gibts irgendwo ein Deutsches Tut über eine Suchfunktion in einem Listenfeld, wo ein..



  • ...Text drin steht???

    mfg
    SF



  • Wies der Titel schon sagt.... mein ich.... öhö.... ich cha schnäll tesche...
    ups da ghört ned do he... scheisse!!!



  • Hi,
    ich weiss zwar ehrlich gesagt nicht, ob dies genau das ist was du suchst, aber folgender Code ermoeglicht dir die Suche in einem Listenfeld analog zur Suche, wie man sie in .chm Hilfen z.B. findet. Das heisst, der User gibt einen Buchstaben ein und das entsprechende Feld mit dem gleichen Anfangsbuchstaben wird selektiert. Beim zweiten Buchstaben rutscht die Auswahl dann weiter usw. Musst du natuerlich noch ein bisschen anpassen.

    void CProjektView::OnChangeSuche() 
    {
        // Parameter setzen
        UpdateData(TRUE);
        SetCurSel(0);
        SetFlags();
        m_bDsErster = true;
    
        // Die Anzahl der Zeichen im Suchstring
        int suchanzahl;
    
        // Subitem fuer die Suche in Name oder Vorname
        int subitem = 0;
    
        // Gesamtanzahl der items im ListView
        int itemgesamt = m_MainList.GetItemCount()+2;
        int zaehler = 0;
    
        // initialisiert die Variable fuer die Suche
        int found = 0;
    
        // temporaere Variable fuer m_MainSuche
        CString suchtext;
    
        // temporaere Variable fuer die Texte des Listviews
        CString viewtext;
    
        // Auslesen, ob nach Name oder Vorname gesucht
        // werden soll
        if(m_RadioName == 0) subitem = 2;
            else subitem = 3;
    
        // Inhalt von m_MainSuche holen
        UpdateData(TRUE);
        m_MainSuche.GetWindowText(suchtext);
        //suchtext = m_MainSuche;
    
        // Konvertierung in Kleinschreibung, um die Suche unabhaengig zu machen
        suchtext.MakeLower();
        suchanzahl = suchtext.GetLength();
    
        // Duchlaufen des ListViews und Vergleich mit dem Suchstring
        while(found == 0)
        {
            // Den Text im ListView zurecht kneten :clown:
            viewtext = m_MainList.GetItemText(zaehler,subitem);
            viewtext = viewtext.Left(suchanzahl);
            viewtext.MakeLower();
    
            if(viewtext.Compare(suchtext) == 0)
            {
                found = 1;
            }
    
            zaehler++;
    
            if(zaehler == itemgesamt)
                break;
    
        };
    
        // Wenn ein Eintrag gefunden wurde das entsprechende item markieren 
        if(found == 1)
        {
            m_MainList.SetItemState(zaehler-1,LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
    
            // alle Parameter fuer Auswahl, Datensatz usw. setzen
            SetCurSel(zaehler);
            SetFlags();
            m_MainList.EnsureVisible(zaehler-1,FALSE);
    
            if(zaehler > 1)
                m_bDsErster = false;
        }
    
        UpdateData(FALSE);
    }
    

    Gruss
    Ralf


Anmelden zum Antworten