Fórum Rotina generica para fazer ordenamento de DBGrid #386651

18/09/2010

0

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

Responder

Posts

20/09/2010

Eduardo Marcolongo

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;

Responder

Gostei + 0

21/09/2010

Wilson Junior

Responder

Gostei + 0

30/09/2010

Diego Macario

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
Responder

Gostei + 0

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

Aceitar