Ver Mensaje Individual
  #5  
Antiguo 02-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Reputación: 24
BlueSteel Va por buen camino
Cool

Cita:
Empezado por roman Ver Mensaje
Pero el código que pone totote está pensado específicamente para un ClientDataSet lo cual da la enorme ventaja de no tener que reconsultar a la base. El ordenamiento se hace en memoria, por lo cual es mucho más rápido. Además, el código es genérico; sirve para cualquier ClientDataSet sin importar el nombre de los campos ni la columna seleccionada.

Eso sí, creo que se puede simplificar un poco


Código Delphi [-]
procedure SortCDS(DataSet: TClientDataSet; Column: TColumn);
var
IndexName: String;
IndexOptions: TIndexOptions;

begin
if DataSet.IndexName = Column.FieldName + '_IdxA' then
begin
IndexName := Column.FieldName + '_IdxD';
IndexOptions := [ixDescending];
end
else
begin
IndexName := Column.FieldName + '_IdxA';
IndexOptions := [];
end;

if DataSet.IndexDefs.IndexOf(IndexName) = -1 then
DataSet.AddIndex(IndexName, Column.FieldName, [ixDescending]);

DataSet.IndexName := IndexName;
end;





// Saludos

Interesante el código.. esto me simplificaria varias lineas...

ahora donde se debe dejar este código y como se vincula a un dbGrid....??? para cuando pinchen los titulos se ordene....

Salu2
__________________
BlueSteel
Responder Con Cita