Fórum Rotina generica para fazer ordenamento de DBGrid #386651
18/09/2010
0
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
Curtir tópico
+ 0Posts
20/09/2010
Eduardo Marcolongo
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
21/09/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
30/09/2010
Diego Macario
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
Clique aqui para fazer login e interagir na Comunidade :)