El método Sort de TObjectList recibe como parámetro una función (que tú defines) que le indica cómo debe comparar tus objetos. La función debe devolver un número positivo si el primer objeto es "mayor" que el primero, 0 si son iguales y un número negativo si el primer objeto es "menor" que el segundo.
Te pongo un ejemplo:
Código Delphi
[-]
TCliente = class
Nombre: String;
Telefono: String;
end;
function ComparaClientes(Item1, Item2: Pointer): Integer;
begin
if TCliente(Item1).Nombre > TCliente(Item2).Nombre then
Result := 1 else if TCliente(Item1).Nombre = TCliente(Item2).Nombre then
Result := 0
else
Result := -1 end;
Lista.Sort(ComparaClientes);
Me parece que TObjectList no tiene forma de insertar ordenadamente.
// Saludos