RE:ordenar columnas en dbgrid
Eso me trajo a mi un quebradero de cabeza, pero al final, lo logre.
Se me ocurrio la idea de montar la SQL de nuevo en el evento OnTitleClick del Grid, donde como puedes observar, tienes un indice de la columna que has pinchado que se pasa por parametro en la declaracion el procedimiento.
Pues solo tienes que jugar con ese indice, y en vez de poner Order By elNombreDelCampo, te da igual si se pone Order By 1 o 2 o 3, porque la SQL va a seguir siendo valida. De hecho, es mas rapida.
Es decir, si pinchas en la cuarta columna, el Order By lo podrias montar como "Order By 4", que se correspondera con el 4º campo de tu Select, siendo igual de valido.
Espero haberte ayudado.