Bestimmte Einträge aus ComboBox entfernen



  • Hallo,

    in meiner ComboBox habe ich zahlreiche Einträge, die nach folgenden Muster aufgebaut sind.

    Wort1.WortA
    Wort1.WortB
    Wort1.WortC
    Wort2.WortA
    Wort2.WortB
    Wort3.WortA
    Wort3.WortB
    Wort3.WortC

    Nun möchte ich aus meiner ComboBox alle Einträge entfernen, in denen der String "Wort2." gefunden wird. Wie kann ich dies machen?

    So habe ich es versucht:

    String s1 = "";
      String s2 = "";
      for (int i = 0; i < COMBOX->Items->Count; i++)
      {
         s1 = tname + ".";
         s2 = COMBOX->Items->Strings[i];
    
         // wenn enthalten
         if (s2.Pos(s1) != 0)
         {
            COMBOX->Items->Delete(i);
         }
      }
    

    Dies funktioniert aber nicht, hat jemand ne Idee den Code so zu ändern dass er läuft, bzw. hat jemand ne bessere Lösung?

    Arne



  • Du musst die Liste rückwärts durchlaufen, da sich sonst beim Löschen die Reihenfolge bzw. der Index der noch zu durchsuchenden Items verschiebt.



  • oder du nimmst ein bissel API zur hilfe:

    AnsiString SuchString = "Wort2.";
    int        ret        = -1;
    
    while ((ret = SendMessage(ComboBox1->Handle, CB_FINDSTRING, -1, (LPARAM) (LPCSTR) SuchString.c_str())) != CB_ERR)
      SendMessage(ComboBox1->Handle, CB_DELETESTRING, ret, 0);
    

    [ Dieser Beitrag wurde am 12.06.2003 um 23:02 Uhr von Sunday editiert. ]



  • Sunday:
    Das war jetzt aber rein informativ gedacht, oder? Du würdest das doch nicht wirklich jemandem zur Anwendung (im BCB) empfehlen!? 😉


Anmelden zum Antworten