Rotina generica para fazer ordenamento de DBGrid

Delphi

18/09/2010

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
Diego Macario

Diego Macario

Curtidas 0

Respostas

Eduardo Marcolongo

Eduardo Marcolongo

18/09/2010

Vc quer ordenar os dados ?
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
Diego Macario

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
GOSTEI 0
POSTAR