Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Ordenar DBGRID en Delphi 10 Seattle.

Buen día.

Muchos me imagino que han utilizado este trozo de código para ordenar campos en delphi 7:
Código Delphi [-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
 const PreviousColumnIndex : integer = -1;
{$J-}
begin
  if DBGrid1.DataSource.DataSet is TCustomADODataSet then
  with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
  begin
    try
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
    except
    end;

    Column.title.Font.Style := 
    Column.title.Font.Style + [fsBold];
    PreviousColumnIndex := Column.Index;

    if (Pos(Column.Field.FieldName, Sort) = 1)
    and (Pos(' DESC', Sort)= 0) then
      Sort := Column.Field.FieldName + ' DESC'
    else
      Sort := Column.Field.FieldName + ' ASC';
  end;
end;

pero al utilizar una de las versiones XE en adelante ya no funciona.

En este sentido, luego de investigar y realizar pruebas, adjunto la forma de como ordenarlo inclusive para la ultima versión Delphi 10 seattle.

Código Delphi [-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
 const PreviousColumnIndex : integer = -1;
{$J-}
begin
  if DBGrid1.DataSource.DataSet is TCustomADODataSet then
  with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
  begin
    try
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
    except
    end;

    Column.title.Font.Style :=
    Column.title.Font.Style + [fsBold];
    PreviousColumnIndex := Column.Index;

if  (ANSIPos(ANSIString(Column.Field.FieldName), Sort) = 1) and
    (ANSIPos(ANSIString(' DESC'), Sort)= 0) then
//antes
//    if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort)= 0) then
      Sort := Column.Field.FieldName + ' DESC'
    else
      Sort := Column.Field.FieldName + ' ASC';
  end;
end;

Espero sea de utilidad ya que me han ayudado bastante y con esto aporto mi pedazo de arena.

Muchos saludos desde República Dominicana.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
[DANYSOFT] Videos Delphi y C++Builder 10 Seattle Neftali [Germán.Estévez] Noticias 0 23-09-2015 23:43:34
[DANYSOFT] Seminario Web Delphi y C++Builder 10 Seattle Neftali [Germán.Estévez] Noticias 0 09-09-2015 14:02:17
[DANYSOFT] Delphi 10 Seattle | Novedades Neftali [Germán.Estévez] Noticias 0 06-09-2015 22:13:08
RAD Studio 10 Seattle AgustinOrtu Noticias 15 04-09-2015 19:58:27
Ordenar dbgrid jzk OOP 4 17-12-2004 14:45:45


La franja horaria es GMT +2. Ahora son las 10:46:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi