Chama essa função no evento ontitleclick do dbgrid...

ele vai ordenar crescente e decrescente e vc podera chama-la para usar em qq
dbgrid

as ordens

[]´s
Bruno Lichot
Micrologos Dream Team
Equipe Editorial ClubeDelphi DevMedia

[EMAIL PROTECTED]
[EMAIL PROTECTED]

www.micrologos.com.br - www.clubedelphi.net - www.dugrj.com.br

//chamada
procedure TMeuForm.DbgGridTitleClick(
  Column: TColumn);
begin
  OrdenaDataSetGrid(ClientDataSet
                   ,Column
                   ,DbgGrid);
end;
//função
procedure OrdenaDataSetGrid(
  var CDS: TClientDataSet; Column: TColumn; var dbgPrin: TDBGrid);
const
  idxDefault = 'DEFAULT_ORDER';
var
  strColumn : string;
  i : integer;
  bolUsed : boolean;
  idOptions : TIndexOptions;
begin

  strColumn := idxDefault;

  if Column.Field.FieldKind in [fkCalculated, fkLookup, fkAggregate] then
Exit;

  if Column.Field.DataType in [ftBlob, ftMemo] then Exit;

  for i := 0 to dbgPrin.Columns.Count -1 do
    dbgPrin.Columns[i].Title.Font.Style := [];

  bolUsed := (Column.Field.FieldName = CDS.IndexName);

  CDS.IndexDefs.Update;
  for i := 0 to CDS.IndexDefs.Count - 1 do
  begin
    if CDS.IndexDefs.Items[i].Name = Column.Field.FieldName then
    begin
      strColumn := Column.Field.FieldName;
      case (CDS.IndexDefs.Items[i].Options = [ixDescending]) of
        true : idOptions := [];
        false : idOptions := [ixDescending];
      end;
    end;
  end;

  if (strColumn = idxDefault)  or (bolUsed) then
  begin
    if bolUsed then
      CDS.DeleteIndex(Column.Field.FieldName);
    try
      CDS.AddIndex(Column.Field.FieldName, Column.Field.FieldName,
idOptions, '', '', 0);
      strColumn := Column.Field.FieldName;
    except
      if bolUsed then
      strColumn := idxDefault;
    end;
  end;

  try
   CDS.IndexName := strColumn;
   Column.Title.Font.Style := [fsbold];
  except
   CDS.IndexName := idxDefault;
  end;
end;
----- Original Message ----- 
From: "Valfrid-Ly Silva Couto" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Tuesday, December 13, 2005 1:33 PM
Subject: Re: [delphi-br] Ordenar DbGrid ao clicar na coluna


Se você estiver usando ClientDataSet, você pode,  no evento OnTitleClick,
pegar o nome do campo no parâmetro Column que é  passado e colocar na
propriedades IndexFieldNames do CDS.

Levi Ribeiro de Freitas <[EMAIL PROTECTED]> escreveu:  Pessoal,

Como faço para ordernar um dbgrid ao clicar na coluna e deixar a coluna
marcada diferente indicando a ordenação?

Atenciosamente,

Levi Ribeiro de Freitas
Programador de Computadores



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos












Valfrid-Ly Silva Couto
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
ICQ 15114646

---------------------------------
 Yahoo! doce lar. Faça do Yahoo! sua homepage.

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos











-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a