That depends entirely on whether your calc'ed data has been saved or not. Regardless of the "Only calc on save" setting, we always save the calc'ed value when submitting a form. That setting controls whether we then re-calc on the fly when displaying, or just use the saved value.
If you are using rows where you added a calc element AFTER the rows were created, and some or all of your rows have not been submitted through a form since adding or changing a calc, then the value will not exist in the table, or might be wrong.
If the values are not in the table, then we can't order on them, as that's done in the query with an ORDER BY statement. And we can't do the ordering in PHP after selecting, because in order to handle pagination, that would mean selecting every row in the table (potentially millions), performing your calc on every row, ordering in PHP, then grabbing the 20 (or whatever) we need form the ordered data. Which would be insanely slow, versus just applying an ORDER BY with a LIMIT and selecting the 20 rows we need.
What you will probably have to do, is work out the SQL query to "prime" your calc'ed values in the database by hand. So if your calc was (say) "return (int)'{mytable___foo}' + (int)'{mytable___bar}';", then you'd run a query like "UPDATE mytable SET mycalc = foo + bar".
You would then have a table where the mycalc field is up to date. And as long as the data you are using to calculate mycalc only ever changes through submission of that form, then the data should stay in sync from then on. Adding new rows and editing existing ones through the form will update the values of the calc in the table, so it'll be usable for ordering in a query.
-- hugh