The first part is simply implementing a series of scripts for each button that perform the needed finds by specifying criteria appropriate to the requirements for that button.
Here's an example where all records where Order_Type = "Sales" will be found:
Enter Find mode  //clear the pause check box
Set field [Invoices::Order Type ; "Sales"]
Set Error capture [on] //keeps dialog box from interrupting your script if no records are found.
Perform Find 
Sort [no dialog ; restore ] //specify a sort order you want to appear initially.
For your click a column head to sort feature, you can use button setup to turn each column heading into a button and each can perform it's own sort script.
If you want to toggle between ascending and descending sort order options, you can have your script use global fields or variables to keep track of the current sort order.
That produces a script like this:
#Sorts by Date Created in opposite of current sort order if sorted by date.
If [$$SortField = "Date Created" and $$SortOrder = "Ascending" ]
Sort [no dialog ; restore ] //specify sort on Date created in descending order
Set variable [$$SortOrder ; Value: "Descending"]
Sort [no dialog ; restore ] //specify sort on date created in ascending order
Set variable [$$SortOrder ; Value: "Ascending"]
Set Variable [$$SortField ; Value: "Date Created"]
Note, if found set is sorted on any other field, the sort defaults to ascending order.