En principio parece que no se puede hacer via código. La funcion que se encarga de ordenar el array, es una funcion statica interna a la clase, con lo que no puedes llamarla desde fuera.
Yo veo dos posibles soluciones, una crear un metodo para poder ordenar, y otra añadir un parametro a setarray para poder especificar por que columna ordenar.
Aunque ambas dos no son compicadas de implementar, la segunda se trataria de modificar solo dos lineas del metodo SetArray.
- Code: Select all Expand view RUN
METHOD SetArray( aData, lAutoOrder, nColOrder ) CLASS TXBrowse
Aqui añadimos el parametro nColOrder
Localiza la linea donde se ejecuta SortArray, y cambia el if anterior (if nFor == 1) por el siguiente.
- Code: Select all Expand view RUN
if nFor == IF(nColOrder!=NIL,nColOrder,1)
Este codigo no lo he probado, pero creo que debe de funcionar para lo que tu quieres. Llamas al metodo SetArray igual que antes, mas un tercer parametro opcional donde le especificas la columna por la que quieres ordenar.
- Code: Select all Expand view RUN
oBrw:SetArray( aDatos, .T. ,2)
PD Como siempre, si Antonio lo estima oportuno, y cree que puede ser util para mas gente, este codigo puede añadirse a la clase sin problema.