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: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > nome de Flavio > Enviada em: quarta-feira, 12 de julho de 2006 15:07 > Para: delphi-br@yahoogrupos.com.br > 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