Como ordenar os campos do DBGrid atraves da colunas
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.
correspondete do campo, sem usar ClientDataSet e sem usar Query.
- Estou utilizando Delphi 6 / ADO / Access 2000
AdoConnect - AdoTable - DataSource
Desde já obrigado.
Canastra
Curtidas 0
Respostas
Rômulo Barros
25/09/2004
Evento CellClick do DBGrid
:wink: :wink: :wink: :wink: :wink:
procedure TForm1.DBGrid1CellClick(Column: TColumn); begin ClientDataSet1.IndexFieldNames := Column.FieldName; end;
:wink: :wink: :wink: :wink: :wink:
GOSTEI 0
Joao_schroeder
25/09/2004
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.
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.
GOSTEI 0
Canastra
25/09/2004
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 ...........
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 ...........
GOSTEI 0
Uildenei
25/09/2004
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.
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.
GOSTEI 0
Canastra
25/09/2004
Uildenei,
Fiz como falou, e deu tudo certo.
O B R I G A D O.........................
Fiz como falou, e deu tudo certo.
O B R I G A D O.........................
GOSTEI 0
Ezequias_rocha
25/09/2004
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;
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;
GOSTEI 0
Danilo Oliveira
25/09/2004
Tenho essa mesma duvida só que pra FMX alguém poderia me ajudar?
GOSTEI 0