Spaltensoriterung in ListCtrl nach Zahlen



  • Hi,

    folgendes problem:
    ich hab ein ListControl und möchte nun nach einer spalte sortieren, die nur zahlen enthält. die sorteierung soll aber ohne knopfdruck auf die spaltenüberschrift ablaufen.
    wenn z.b. in der 2. spalte meines listctr nur zahlen sind, dann möchte ich, dass meine einträge im listctrl von der höchsten zur niedrigsten zahl geordnet werden (auch negative zahlen sollen berücksichtigt werden)
    ich hab nur keinen blassen schimmer wie ich das anfangen soll. bei codeguru hab ich auch schon geschaut, aber irgendwie hilft mir das auch nicht so recht weiter.

    falls wer was (relativ einfaches 😉 ) weiss, und mein problem überhaupt verstanden hat, kann er sich ja mal melden 🙂

    Striker



  • // Bespiel aus der MSDN:
    
    CListCtrl::SortItems
    
    // Sort the item in reverse alphabetical order.
    static int CALLBACK 
    MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
      // lParamSort contains a pointer to the list view control.
      // The lParam of an item is just its index.
      CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
      CString    strItem1 = pListCtrl->GetItemText(lParam1, 0);
      CString    strItem2 = pListCtrl->GetItemText(lParam2, 0);
    
      return strcmp(strItem2, strItem1);
    }
    
    void snip_CListCtrl_SortItems()
    {
      // The pointer to my list view control.
      CListCtrl* pmyListCtrl;
    
      // Sort the list view items using my callback procedure.
      pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
    }
    

    Du überprüfst einfach die Werte mit atoi statt mit strcmp



  • auch diesen aintrag aus der MSDN hatte ich schon gelesen...
    aber wenns um zahlen geht, hilft mir der nicht wirklich weiter.
    mein problem hat sich damit nicht wesentlich verändert 😉
    Außerdem sind meine zu vergleichende zahlen keine vom typ 'int' sonder vom typ 'double'.

    Striker

    [ Dieser Beitrag wurde am 11.09.2002 um 17:32 Uhr von Striker editiert. ]



  • Dann nimmst einfach statt atoi atof



  • so schlau war ich auch, aber dann hörts auch schon auf mit meiner klugheit 🙂



  • also in der FAQ steht ja wie man das macht. Dort gibt es einen Link zu CodeGuru.

    Der Code bei CodeGuru sortiert leider Alapb. und nicht nach Zahlen.

    Der Code bei CodeGuru sortiert das nach der BubbleSort Sortier (kan man Algorythmen sagen?) methode.

    Wenn du nun dies umstellst nach deinen wünschen müßte es ja gehen.

    ich hoffe ich konte dir Helfen.


Anmelden zum Antworten