I do the same in most of my DBs. I use a textbox and set the value to =SomeCaption. This way it can be active control and you can use a single function instead of writing lots of event procedures.. Then I set the tag property to the sort string. Usually this is more than just the primary field because most times it may not make much sense not to have additional fields sorted if you sort by the clicked field.. Something like "OrderNo, DrawingNo,...". Whe they click check if DESC follows OrderNo if not add DESC else use the tag by itself.
As pointed out no control I know of can do both the single and double click. But you can use a mouse down instead of the click event. Then you can capture something like a shift or a right mouse (have to disable the menu though). In a recent thread I suggested t that so they had a normal mouse down and a shift mouse down do different things. It worked well.
You could also make this a 3 way click. Asc, Desc, back to default. Not sure if that is any simpler.