Fórum Como ordenar os campos do DBGrid atraves da colunas #252041

25/09/2004

0

Como eu posso ordenar os campos no DBGrid, clicando na coluna
correspondete do campo, sem usar ClientDataSet e sem usar Query.
- Estou utilizando Delphi 6 / ADO / Access 2000
AdoConnect - AdoTable - DataSource

Desde já obrigado.


Canastra

Canastra

Responder

Posts

25/09/2004

Rômulo Barros

Evento CellClick do DBGrid

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  ClientDataSet1.IndexFieldNames := Column.FieldName;
end;


:wink: :wink: :wink: :wink: :wink:


Responder

Gostei + 0

25/09/2004

Joao_schroeder

Talvez não seja o que queres, mas também é útil.
Ao clicar no título do DBGrid ele irá ordenar pelo campo clicado.



procedure TF_con_cadcli.DBGrid1TitleClick(Column: TColumn);
var
posicao: integer;
begin
with IBQuery1 do
begin
if active then
Close;
with SQL do
begin
posicao := pos(´ORDER BY´, UpperCase(Text));
if posicao = -1 then
Add(´ORDER BY ´ + Column.FieldName)
else
Text := Copy(Text, 1, Posicao - 1) + ´ORDER BY ´ + Column.FieldName;
end;
Open;
end;
// column.Font.color:=clblue;

esta última linha faz com que mude a cor da coluna clicada.


Responder

Gostei + 0

25/09/2004

Canastra

Estou usando ADOTable, sou principiante em Delphi e não sei utilizar e
configurar o componente ClientDataSet.

Se puder me explicar usando AdoTable, ótimo, caso contratio favor
me explicar quais as configurações das propriedades e código dos
eventos.


Desde já O B R I G A D O ...........


Responder

Gostei + 0

25/09/2004

Uildenei

voce pode fazer da forma facil:

no evento OnTitleclick poe o codigo abaixo ...

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if (Pos(Column.FieldName, tb.IndexFieldNames) > 0)and(Pos(´DESC´, tb.IndexFieldNames) = 0) then
tb.IndexFieldNames:=tb.IndexFieldNames + ´ DESC´
else
tb.IndexFieldNames:=Column.FieldName;
end;

senao pode usar a propriedade TIndexDefs
e criar os indices e fazer o tratamento necessario.


Responder

Gostei + 0

25/09/2004

Canastra

Uildenei,


Fiz como falou, e deu tudo certo.


O B R I G A D O.........................


Responder

Gostei + 0

22/03/2007

Ezequias_rocha

Estou tentando colorir a coluna clicada para informar por qual está ordenada mas está dando um erro de Access Violation (como se a coluna não estivesse pronta)

Segue código abaixo:


Var posicao, i:integer;
begin
inherited;
With (dsPrincipal.DataSet as TQuery).SQL do
Begin
posicao := pos(´ORDER BY´, UpperCase(Text));
if posicao = -1 then
Add(´ORDER BY ´ + Column.FieldName)
else
(dsPrincipal.DataSet as TQuery).SQL.text := Copy((dsPrincipal.DataSet as TQuery).SQL.text, 1, Posicao - 1) + ´ORDER BY ´ + Column.FieldName;

dsPrincipal.DataSet.Open;
end;
column.Color:= clBlack;


Responder

Gostei + 0

13/05/2019

Danilo Oliveira

Tenho essa mesma duvida só que pra FMX alguém poderia me ajudar?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar