No hay una manera inmediata ya que el DBGrid mostrará los datos en el orden en que vengan de la base de datos.
Una opción sería agregar un índicepor cada columna a tu tabla y en el evento OnTitleClick del DBGrid cambiar el índice al que corresponda en la columna.
Otra forma sería alimentar al DBGrid con un Query en lugar de un Table. En el evento OnTitleClick actualizarías la consulta así:
Código:
Query.SQL.Text := 'select * from agenda order by ' + Column.Field.FieldName;
Query.Open;
Una tercera opción, quizá no tan conveniente si estás empezando, es usar ClientDataSets que te permiten indexar por cualquier columna sin necesidad de agregar índices a tu tabla.
// Saludos