TListView Anzeige Filter n-stück



  • Guten Abend C++ Community,

    Habe mir eine kleine Anwendung gebastelt.
    Mit einem Sever und Client. Ähnliches wie ein Chatsystem aufgebaut.

    Das Problem:

    Der Server sucht ständig nach den neusten News auf verschiedenen Webseiten(z.b. Nachrichtenportale, Forum) und sendet erstmal alle Ergebnisse an den Client.

    Möchte gerne, dass man bei dem Client zur Laufzeit einen Filter anlegen kann,
    z.b.: alle Informationen aus der Quelle: x, sollen in die TListView aufgenommen und angezeigt werden.

    Diese Filter sollen, n-mal(also zb 10 verschiedene) zur Laufzeit hinzugefügt werden können.

    -------------------------------------------------

    Habe keinen blassen Schimmer, wie ich das Problem angehen kann, würde mich sehr freuen, wenn Ihr mir helfen könntet.

    Mit freundlichen Grüßen
    inek68



  • int i = 0;
    while( i < 10; )
    {
        quelle = Eintrag->Quelle;   // Herkunft
        if( quelle == Auswahl )
        {
            ListView->Add( "wasauchimmer" );
            ...
            i++
        }
    }
    

    Auswahl könnte z. B. eine Userauswahl sein( mögliche Quellen in einer DropDownList, ... ).
    nur mal so als Denkanstoss.

    grüssle 🙂



  • Vielen Dank Smitty für deinen Beitrag.

    so wie du es beschrieben hast, kann man ja exakt nur nach einer Quelle filtern,

    wie ist das möglich, dass ich zur Laufzeit x-beliebige Filter hinzufügen kann, oder geht das garnicht?



  • Hallo

    Klar geht das, du must es nur selber programmieren. Der Vorschlag von Smitty zeigt das Prinzip. Du must noch die eigentliche Bedingung dynamischer gestalten. Wie genau das bei dir aussehen soll, können wir nicht wissen. Als Vorschlag gehe ich davon aus das alle gewünschten Quellen in einem TStrings-Objekt namens Auswahl stehen (z.B. aus einer TListBox). Dann könnte die Bedingung so aussehen :

    if( Auswahl->IndexOf(quelle) != -1 )
    {
      // Eintrag ist eine gewünschte Quelle
    }
    

    bis bald
    akari



  • inek68 schrieb:

    Vielen Dank Smitty für deinen Beitrag.

    so wie du es beschrieben hast, kann man ja exakt nur nach einer Quelle filtern,

    wie ist das möglich, dass ich zur Laufzeit x-beliebige Filter hinzufügen kann, oder geht das garnicht?

    [cpp]if( quelle == Auswahl1 || quelle == Auswahl2 ... )
    [/cpp]

    für jede Auswahl dann einen eigenen Zähler.
    Und die einzelnen Quellen dann in z. B. einer DropDownList, die ja auch je nach Bedarf erweitert werden kann.

    Und das ganze dann noch eleganter gestalten, z. B. die Auswahl in eine Funktion
    auslagern. Vorteil: Über die Parameter kann die Anzahl der Filter variabel gehalten werden.

    grüssle 🙂



  • Erstmal Vielen Dank für eure Post.

    Habe die Tage etwas üerlegt, mir ist noch ein Lösungsweg eingefallen.

    Ich speicher einfach die Filter Wörter zb. Quellennamen in einem Array.

    for (int i=0; i<10; i++){
    if (filterarray[i]=="www.Spiegel.de")
    {
    do ....
    };
    }
    

    Was haltet ihr von diesem Lösungsansatz?



  • eine von mehreren Möglichkeiten.
    Jetzt nur noch die Quellen auch in ein Array, für jede gewünschte Quelle mitzählen, und dann sollte es passen.

    z. B.

    TStringList* quellen = new TStringList;   
    TStringList* auswahl = new TStringList;
    for( int i = 0; i < quellen->Count(); i++ )
    {
        for( int j = 0; j < auswahl->Count(); j++ )
        {
            if( quellen->Strings[i] == auswahl->Strings[j] )
            {
                jew. Zähler hoch, Eintrag anzeigen, ...
            }
        }
    }
    

    nur mal so runtergetippt, sollte aber helfen.

    grüssle 🙂


Anmelden zum Antworten