Cita:
Empezado por newtron
Igual suelto una tontería pero yo tengo entendido que en un Dbgrid se plasma el contenido bien de un TTable o de un Query por lo que igual deberías de pensar en cambiar el orden en la fuente de datos, cosa que se reflejará en el Dbgrid, en vez de manipular los datos del Dbgrid directamente.
Saludos
|
te cuento que eso es lo que hacen:
Código Delphi
[-]
Function Modificar_Order_SQL(Consulta:string;new_campo_ordenar:string):string;
Procedure Reordenar_consulta(Consulta: TIBCustomDataSet; Campo_ordenar:String);
Pero como esta enlazado a un TDataSource puede tener acceso a un origen de datos, para mi interés TIBTable, TIBDataSet y TIBQuery; o sea puede la grilla modificar la ordenacion los datos en estos componentes; Ya me es posible ordenar cualquier TDBGrid conectado a cualquiera de estos origenes de datos, pero tengo las funciones en una unidad que integro a cada proyecto y en el evento OnTitleClick pongo llamada a dichas funciones:
Código Delphi
[-]procedure TDBGrid_ORDER.TitleClick(Column: TColumn);
begin
IF (column.Field.DataSet is TIBTable) then
begin
messagedlg('La ordenación por ahora no funciona con tablas',mtinformation,[mbok],0);
end
else
begin
reordenar_consulta((column.Field.Dataset as TIbCustomDataSet), Column.Field.FieldName);
end;
if Assigned(FOnTitleClick) then FOnTitleClick(Column);
end;
Pero si podemos crear un componente TIBGRID_SORT o TIBGRID_ORD que ya incluya dichas funciones de ordenación nos ahorramos el tiempo de escribir codigo e incluir unidades en cada proyecto, pero mas que el tiempo ahorrado es por el reto de hacerlo.