Bem, amigo, não sei que componentes vc tá usando, mas eu faço desta
mameira com dexpress:
procedure TfrmProcurar.DBGrid1TitleClick(Column: TColumn);
begin
IndexFieldNames:= Column.FieldName;
end;
Otto Júnior escreveu:
> Eu uso essa função no D7 + Firebird, ver se dar certo pra vc
>
>
> procedure Tform1.DBGrid1TitleClick(Column: TColumn);
> begin
> OrdenarDBGrid( Column.Field.DataSet, Column, DBGrid1 );
> end;
>
>
> =============================================================
> Procedure OrdenarDBGrid( fDataSet : TDataSet; fColumn : TColumn; fDBGrid :
> TDBGrid = Nil );
> Var liCont : Integer;
> bAchou : Boolean;
> begin
> If ( fColumn.Field.Lookup ) Or
> ( fColumn.Field.Calculated ) Then
> Begin
> MessageDlg('Ordenação não disponível', mtInformation, [mbOK], 0);
>
> Exit;
> End;
>
> If fDataSet <> Nil Then
> Begin
> If fDataSet Is TQuery Then
> Begin
> If Pos( 'Order', ( fDataSet As TQuery ).SQL.Text ) > 0 Then
> Begin
> If Pos( ' Desc', ( fDataSet As TQuery ).SQL.Text ) = 0 Then
> ( fDataSet As TQuery ).SQL.Text := Copy( ( fDataSet As
> TQuery
> ).SQL.Text, 1, Pos('Order', ( fDataSet As TQuery ).SQL.Text)-1) +
> 'Order By
> '+fColumn.FieldName+' Desc'
> Else
> ( fDataSet As TQuery ).SQL.Text := Copy( ( fDataSet As
> TQuery
> ).SQL.Text, 1, Pos('Order', ( fDataSet As TQuery ).SQL.Text)-1) +
> 'Order By
> '+fColumn.FieldName;
> End
> Else
> ( fDataSet As TQuery ).SQL.Text := ( fDataSet As TQuery
> ).SQL.Text + ' Order By ' + fColumn.FieldName;
> ( fDataSet As TQuery ).Open;
> End
> Else If fDataSet Is TTable Then
> Begin
> ( fDataSet As TTable ).IndexDefs.Update;
> bAchou := False;
> For liCont := 1 To ( fDataSet As TTable ).IndexDefs.Count Do
> Begin
> If Pos( UpperCase( fColumn.FieldName ), UpperCase( (
> fDataSet As
> TTable ).IndexDefs.Items[ liCont - 1 ].Fields ) ) > 0 Then
> Begin
> ( fDataSet As TTable ).IndexFieldNames :=
> fColumn.FieldName;
> bAchou := True;
> Break;
> End;
> End;
> If Not bAchou Then
> MessageDlg('Ordenação não disponível', mtInformation,
> [mbOK], );
> End;
> If fDBGrid <> Nil Then
> Begin
> Try
> For liCont := 1 To fDBGrid.Columns.Count Do
> Begin
> fDBGrid.Columns[ liCont - 1 ].Title.Color :=
> clBtnFace;
> fDBGrid.Columns[ liCont - 1 ].Title.Font.Color := clBlack;
> fDBGrid.Columns[ liCont - 1 ].Title.Font.Style := [];
> End;
> Except
>
> End;
> End;
> fColumn.Title.color := ClYellow;
> fColumn.Title.Font.Style := [ fsBold ];
> //Column.Title.Font.Style := [ fsBold, fsItalic];
> fColumn.Title.Font.Color := clRed;
> End
> Else
> MessageDlg('Objeto não permitido nesta pesquisa', mtError,
> [mbOK], 0);
>
> End;
> =============================================================
>
> Otto Junior
> Natal/RN
>
>
> -----Mensagem original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] Em
> nome de Flavio
> Enviada em: quarta-feira, 12 de julho de 2006 15:07
> Para: [email protected]
> Assunto: [delphi-br] DBGrid !!!! HELP !!!!
>
> Olá pessoal,
>
> Será que alguém pode me ajudar com uma duvida !?
>
> é a seguinte:
>
> Eu tenho um DBGrid (Delphi 6) e cada coluna é uma coluna da tabela
> Patrimonio do banco de dados Interbase 6.
> Gostaria de saber como faço para, na hora q o usuário clicar em uma coluna
> do DBGrid, automaticamente é deixado em ordem alfabética referente a
> coluna
> q foi clicada. entenderam néh ?!
>
> Uma dúvida simples, porém pra mim é duvidosa...
>
> Obrigado pela atenção !
>
> Flávio
>
>
> ---------------------------------
> Você quer respostas para suas perguntas? Ou você sabe muito e quer
> compartilhar seu conhecimento? Experimente o Yahoo! Respostas!
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
--
<<<<< 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