Bueno, de entrada no sé si esa sea la mejor estructura para la tabla pero, dándola por sentada, cuando el usuario desee la información ordenada subordinadamente por esas tres columnas, creo que una consulta SQL con el
Order By adecuado lo resolvería. Cierto, el valor Null quizá sea un problema pero podría arreglarse de varias maneras, por ejemplo, añadiendo a la tabla Firebird algunos
campos computados especiales para este propósito.
Por otra parte, no sé si hayas caído en la cuenta de que la propiedad IndexFieldNames puede llevar más de un nombre de campo, separándolos con punto y coma (
IndexFieldNames := 'C1;C2;C3...").
Saludos.
Al.