TreeView Header Sorting



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 06/07/2006 at 07:07, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   9.102 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    Any information on how this actually works? I see that there is a method TreeViewFunctions::GetHeaderSortArrow(), but there is no arrow on any of the column headers. So, one supposes that I supply the arrow and which column currently is used for sorting?

    Also, would TreeViewFunctions::HeaderClick() be used to possibly initiate sorting (change ascending/descending for instance)?

    Thanks,



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 06/07/2006 at 10:00, xxxxxxxx wrote:

    No clue, as I haven´t used this yet but I´d be interested in knowing it too. :-)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 06/07/2006 at 10:04, xxxxxxxx wrote:

    I think that I have this 'sorted' (bah-dum-bah). ;)

    GetHeaderSortArrow() wants a non-zero value to determine sort direction (though the docs don't specify what values are expected - eh hem). I'm using 0 for no sort, -1/1 for sorted directions.

    HeaderClick() can be used to change sort direction or select a new sort column.

    Here's my code for TreeViewFunctions:

    LONG GetHeaderSortArrow(void* root, void* userdata, LONG lColID)  
    {  
         rroot =     (ResultsRoot* )root;  
         if (rroot->GetSortCol() == lColID)     return rroot->GetSortDir();  
         return 0;  
    }  
    Bool HeaderClick(void* root, void* userdata, LONG lColID, LONG lChannel, Bool bDblClk)  
    {  
         // Ignore double-clicks and middle/right mouse buttons  
         if (bDblClk)                                   return FALSE;  
         if (lChannel !=     BFM_INPUT_MOUSELEFT)     return FALSE;  
         rroot =     (ResultsRoot* )root;  
         if (rroot->GetSortCol() == lColID)          rroot->InvertSortDir();  
         else                                             rroot->SetSortCol(lColID);  
         return     TRUE;  
    }  
    

    P.S.: Note that the actual sorting must be done in your own code when conditions warrant (change of column, change of sort direction).

    3D Designer, now you know. :)


Log in to reply