Description
Clarion does not provide the ability to sort by columnheaders, but it is very easy to do. This example assumes a 2 column browse. Each column has a index associated with it in the dictionary. The first column is CODE and the second column is DESCRIPTION.
Define this local variable
Loc:SortColumn BYTE
Change the header column on the listbox
From "CODE"
to "CODE •"
- This addes the sort order indicator to CODE
Add the following 2 Conditional Behaviours to the browse control
If Loc:SortColumn = 1 then set browse key is Cus:KeyCode
If Loc:SortColumn = 2 then set browse key is Cus:KeyName
Embed this in ThisWindow.Init, After opening Window
?list{prop:Alrt} = MouseLeftUp
(Assuming ?list is the name of the control)
Embed this in the Window's Alert key embed:
if keycode() = MouseLeftUp
if BRW2.ILC.GetControl(){proplist:MouseDownRow} = 0 and BRW2.ILC.GetControl(){proplist:MouseDownField} <> 0
Loc:SortColumn = ?List{Proplist:MouseDownField}
Case ?List{Proplist:MouseDownField}
Of 1
?List{PROPList:Header,1} = 'CODE •'
?List{PROPList:Header,2} = 'NAME'
Of 2
?List{PROPList:Header,1} = 'CODE'
?List{PROPList:Header,2} = 'NAME •'
End
else
BRW2.TakeNewSelection()
end
End
(Assuming BRW2 is the name of the browse object)