Rotina generica para fazer ordenamento de DBGrid
boa tarde
estou precisando de uma ajuda
como fazer uma rotina generica de ordenar dbgrid
pois eu tenho um form base para pesquisar
mas quero usar um rotina generica para ordenação das colunas
pois deste form base eu herdo para criar novos forms de pesquisa
o formbase tem datasource para vincular ao client dataset e o dbgrid
valeu
estou precisando de uma ajuda
como fazer uma rotina generica de ordenar dbgrid
pois eu tenho um form base para pesquisar
mas quero usar um rotina generica para ordenação das colunas
pois deste form base eu herdo para criar novos forms de pesquisa
o formbase tem datasource para vincular ao client dataset e o dbgrid
valeu
Diego Macario
Curtidas 0
Respostas
Eduardo Marcolongo
18/09/2010
Vc quer ordenar os dados ?
Esta rotina ordena os dados qdo o usuario clica no titulo da grid
Esta rotina ordena os dados qdo o usuario clica no titulo da grid
procedure Tfpbanco.DBGrid1TitleClick(Column: TColumn); begin if sdsauxiliar.indexfieldnames '' then dbgrid1.columns[sdsauxiliar.fieldbyname (sdsauxiliar.indexfieldnames).index].title.color := dbgrid1.fixedcolor; if not (column.field.datatype in [ftblob,ftmemo]) then if column.field.fieldkind = fkdata then begin sdsauxiliar.indexfieldnames := column.fieldname; column.title.color := clinfobk; end; end;
procedure Tfpbanco.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if not odd(sdsauxiliar.recno) then if not (gdselected in state) then begin dbgrid1.canvas.brush.color := $00FFEFDF; dbgrid1.canvas.fillrect(rect); dbgrid1.defaultdrawdatacell(rect,column.field,state); end; end;
GOSTEI 0
Wilson Junior
18/09/2010
De uma olhada neste link https://www.devmedia.com.br/post-16084-Clicar-no-titulo-de-um-DBGrid-e-poder-ordenar-por-aquela-coluna-assim-como-faz-o-Windows-Explorer.html
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Diego Macario
18/09/2010
obrigado pessoal
acabei usando esta rotina aki
procedure TFrmPesqBase.OrdenarDBGrid(Grid: TDBGrid; Coluna: TColumn);
var
Campo :string;
begin
if Grid.DataSource.DataSet.Active then
begin
Campo := Coluna.FieldName;
Application.ProcessMessages;
if (Grid.DataSource.DataSet as TClientDataSet).IndexFieldNames <> Campo then
(Grid.DataSource.DataSet as TClientDataSet).IndexFieldNames := Campo;
end;
end;
e chamando ela no evento ontitleclick
abraço
acabei usando esta rotina aki
procedure TFrmPesqBase.OrdenarDBGrid(Grid: TDBGrid; Coluna: TColumn);
var
Campo :string;
begin
if Grid.DataSource.DataSet.Active then
begin
Campo := Coluna.FieldName;
Application.ProcessMessages;
if (Grid.DataSource.DataSet as TClientDataSet).IndexFieldNames <> Campo then
(Grid.DataSource.DataSet as TClientDataSet).IndexFieldNames := Campo;
end;
end;
e chamando ela no evento ontitleclick
abraço
GOSTEI 0