Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Sort by column in listview

110 views
Skip to first unread message

BGeorge

unread,
May 15, 2013, 2:58:18 PM5/15/13
to
How to sort my ListView when i press in column bar.
I know with oDCListView1:EnableSort(#SortByName) and oDCListView1:SortItems()
but when i call oDCListView1:SortItems() i take Error Code 13 no expord method
argument: ListView:SortByName.
My Code:
METHOD ListViewColumnClick(oListViewColumnClickEvent) CLASS Pelates
LOCAL symColumnName AS SYMBOL
SUPER:ListViewColumnClick(oListViewColumnClickEvent)
//Put your changes here
symColumnName := oListViewColumnClickEvent:ListViewColumn:NameSym
DO CASE
CASE symColumnName == #Name SELF:oDCListView1:EnableSort(#SortByName)
ENDCASE
SELF:oDCListView1:SortItems()
RETURN NIL

METHOD SortByName(oListViewItem1, oListViewItem2) CLASS pelates
LOCAL uValue1 AS USUAL
LOCAL uValue2 AS USUAL

uValue1 := oListViewItem1:GetValue(#aa)
uValue2 := oListViewItem2:GetValue(#aa)

IF uValue1 > uValue2
RETURN -1
ELSEIF uValue1 < uValue2
RETURN 1
ENDIF

RETURN 0

Sory for my poor English,
George

D.J.W. van Kooten

unread,
May 16, 2013, 3:52:33 AM5/16/13
to
On Wed, 15 May 2013 11:58:18 -0700 (PDT), BGeorge <bgeo...@in.gr>
wrote:

Hello George,

I use code I found years ago in this NG; I hope this helps you.


SELF:oDCLV1:SortByColumn(oListViewColumnClickEvent:ListviewColumn:namesym)
METHOD SortByColumn( oLVColumn ) CLASS IC2ListView
//#s
//#s

//#x

//#l Derived from Judd Williams comp-lang newsgroup 22012001
//#l Requires values:e.g. oItem:SetValue(cKlasse, #KLASSE)
//#l
//#l

//#p
//#p

//#r

//#e
SELF:oDCLV:SortByColumn(oListViewColumnClickEvent:ListviewColumn:namesym)
// Zie Functies, IC2.lib
//#e

IF !IsObject( oLVColumn )
oLVColumn := SELF:GetColumn( oLVColumn )
ENDIF

IF oLVColumn = oSortColumn // Repeat click, so invert the sort.
lDescend := !lDescend
ELSEIF ALen( oLVColumn:__ValueList ) > 0
// Sort non-strings in descending order. This is my own
preference.
lDescend := !IsString(oLVColumn:__ValueList[1])
ENDIF

oSortColumn := oLVColumn

RETURN LOGIC(_CAST, SendMessage( hWnd, LVM_SORTITEMS, DWORD(_CAST,
hWnd),LONG(_CAST, @ListView_CompareColumnValues()) ))

METHOD SortRule( xVal1, xVal2 ) CLASS IC2ListView
//#s
//#s

//#x

//#l Derived from Judd Williams comp-lang newsgroup 22012001
//#l
//#l
//#l

//#p
//#p

//#r

//#e
//#e

IF lDescend
IF xVal1 < xVal2
RETURN 1
ELSEIF xVal1 > xVal2
RETURN -1
ELSE
RETURN 0
ENDIF
ELSE
IF xVal1 > xVal2
RETURN 1
ELSEIF xVal1 < xVal2
RETURN -1
ELSE
RETURN 0
ENDIF
ENDIF

STATIC FUNCTION ListView_CompareColumnValues(lParam1 AS LONG, lParam2
AS LONG, lHandle AS LONG) AS INT CALLBACK
//#s
//#s

//#x

//#l Derived from Judd Williams comp-lang newsgroup 22012001
//#l
//#l
//#l

//#p
//#p

//#r

//#e
//#e

LOCAL oListView AS IC2ListView
LOCAL xVal1, xVal2 AS USUAL
LOCAL aVal AS ARRAY // 9-3-2004
compilerbug 2.7

// oListView := __WCGetControlByHandle( PTR(_CAST, lHandle) )
oListView := OBJECT(_CAST,__WCGetControlByHandle( PTR(_CAST,
lHandle) )) // Prefered code according to Meinhard NG 6-8-2012
IF oListView <> NULL_OBJECT
aVal:=oListView:oSortColumn:__ValueList // 9-3-2004
xVal1 := aVal[lParam1] // instead of xVal1 :=
oListView:oSortColumn:__ValueList[lParam1]
xVal2 := aVal[lParam2] // instead of xVal2 :=
oListView:oSortColumn:__ValueList[lParam2]
RETURN oListView:SortRule(xVal1,xVal2)
ENDIF
RETURN 0


0 new messages