Guest - Andreia - Postado Julho 13, 2006 Denunciar Share Postado Julho 13, 2006 Bom diaGostaria de saber se tem como fazer no DBgrid o esquema de ordenar , clicando na descricao da coluna.Tipo eu tenho um DBgrid com Nome e Endereço.Ai se eu clicar na descricao Nome (primeira coluna)...ele ordena por nome....e de Clicar em Endereço, ele ordena por endereço..Agradeço muito a ajudaAbraçosAndreia Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 13, 2006 Denunciar Share Postado Julho 13, 2006 Os dados para o DBGrid virão de uma tabela ou query? Qual o banco que você vai utilizar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Julho 14, 2006 Denunciar Share Postado Julho 14, 2006 Ola Micheusè..o resultado que aparece no Dbgrid é de uma query, e eu estou usando o BD Interbase.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maikel Postado Julho 14, 2006 Denunciar Share Postado Julho 14, 2006 Olá AndréiaTente colocar o código a seguir no Evento OnTitleClick do DBGrid:Var i:Integer; begin Try for i:=0 to Column.Grid.FieldCount - 1 do begin GridExibicao.Columns.Items[i].Title.Font.Color:=ClBlack;//Cor da Fonte GridExibicao.COLUMNS.ITEMS[I].TITLE.FONT.STYLE := [];//Cot da Fonte GridExibicao.Columns.Items[i].Title.Color:=clBtnFace;//Cor do Fundo do Titulo Normal Column.Title.Color :=clSilver;//Cor do Fundo do Titulo Selecionado COLUMN.TITLE.FONT.STYLE := [FSBOLD]; Column.Title.Font.Color:=ClBlue; Column.Font.color:=clTeal; Col:= GridExibicao.Columns[Column.Index].Index; GridExibicao.Columns.Items[i].Font.color:=ClBlack; (DataSourceGrid.DataSet as TClientDataSet).IndexFieldNames := Column.FieldName; end; Except ShowMessage('Não foi possível ordenar os valores'); End;Esse código ordena por ordem crescente e destaca a coluna selecionada...Acho que isso vai te ajudar...Att Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 14, 2006 Denunciar Share Postado Julho 14, 2006 maikel O procedimento é este mesmo, mas observe que Andreia está utilizando Query, o que não vai permitir usar (não que eu saiba): (DataSourceGrid.DataSet as TClientDataSet).IndexFieldNames := Column.FieldName;A cláusula order by da query é que deverá ser ajusta para ordenar pelo campo selecionado.[]s Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Julho 14, 2006 Denunciar Share Postado Julho 14, 2006 OlaObrigadaSou iniciante, e não consegui fazer essa linha que você mandou de exemplo(DataSourceGrid.DataSet as TClientDataSet).IndexFieldNames := Column.FieldName;eu estou usando Query,DataSource e IBDatabase.Obrigada Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 14, 2006 Denunciar Share Postado Julho 14, 2006 Acho que seria algo assim:procedure TForm1.FormShow(Sender :TObject); begin // força a inicialização pelo campo da primeira coluna DBGrid1TitleClick(DBGrid1.Columns[0]); end; ... procedure TForm1.DBGrid1TitleClick(Column: TColumn); var Idx :Integer; begin // Alteração da query ordenando pelo campo "clicado" with DBGrid.DataSource.DataSet as TIBQuery do begin; Idx := Pos('ORDER BY ', UpperCase(SQL.Text)); if Idx > 0 then begin SQL.Text := Copy(SQL.Text, 1, IdX -1); SQL.Text := SQL.Text +'ORDER BY '+Column.FieldName; end; Close; Open; end; // restaurando a cor do título DBGrid1.Columns[DBGrid1.Tag].Title.Color := clBtnFace; DBGrid1.Columns[DBGrid1.Tag].Title.Font.Color := clWindowText; DBGrid1.Columns[DBGrid1.Tag].Title.Font.Style := []; // guarda a coluna selecionada DBGrid.Tag := Column.Index; // alterando a cor do título do campo ordenado DBGrid1.Columns[DBGrid1.Tag].Title.Color := $00BE7C7C; DBGrid1.Columns[DBGrid1.Tag].Title.Font.Color := clWhite; DBGrid1.Columns[DBGrid1.Tag].Title.Font.Style := [fsBold]; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 Micheus, desculpe a ignorancia , massseu tenho essa IBQuery em um Datamodule, e fiz assim , mas não deu certo. with DBGrid1.DataSource.DataSet as Datamodule2.IBQuery6 dowith DBGrid1.DataSource.DataSet as Datamodule2.TIBQuery dopoderia me dar uma luz?Agradeço muito sua ajuda e pacienciaAbraçosAndreia Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Andreia - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 Micheus e maikelconseguii..MUITO OBRIGADA ...quando precisar de mim....e eu puder ajudar..terei o maior prazer...OBRIGADA maiorços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Alisson Postado Outubro 19, 2006 Denunciar Share Postado Outubro 19, 2006 olá, aproveitando o assunto, gostaria d saber como fazer para trocar a posição das colunas. Exemplo: ao selecionar um ítem para pesquisa num RadioGroup, digitar o valor a ser pesquisado numa edit e clicar num botão para pesquisar ele pega a coluna "1" e inverte com a coluna "0", ou seja, passa o "Nome" como primeira coluna e o "Código" ao lado. Desde já agradeço a atenção.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Outubro 19, 2006 Denunciar Share Postado Outubro 19, 2006 Tipo:var W0, W1 : integer; begin if DBGrid1.Columns[0].FieldName = 'Codigo' then begin W0 := DBGrid1.Columns[0].Width; W1 := DBGrid1.Columns[1].Width; DBGrid1.Columns[0].FieldName := 'Nome'; DBGrid1.Columns[0].Width := W1; DBGrid1.Columns[1].FieldName := 'Codigo'; DBGrid1.Columns[1].Width := W0; end else begin W0 := DBGrid1.Columns[0].Width; W1 := DBGrid1.Columns[1].Width; DBGrid1.Columns[0].FieldName := 'Codigo'; DBGrid1.Columns[0].Width := W1; DBGrid1.Columns[1].FieldName := 'Nome'; DBGrid1.Columns[1].Width := W0; end; end;Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Andreia -
Bom dia
Gostaria de saber se tem como fazer no DBgrid o esquema de ordenar , clicando na descricao da coluna.
Tipo eu tenho um DBgrid com Nome e Endereço.
Ai se eu clicar na descricao Nome (primeira coluna)...ele ordena por nome....e de Clicar em Endereço, ele ordena por endereço..
Agradeço muito a ajuda
Abraços
Andreia
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.