[ cacafaca @ 03.02.2006. 14:52 ] @
Ne da sam car, nego...! :)))

Ako je neko pokusavao da sortira DBGrid i uspelo mu je u prvom dodavanju indexa (prvo pozivanje AddIndex) a u drugom mu je prijavljivalo gresku "Must use baseorder for this operation" samo je trebao da posluĊĦa poruku koju mu je DElphi javio i postavi index na primarni tj IndexName:=''.

Ccc! Dva dana se ubijam trazeci po netu. I naisao sam da su i drugi imali ovakve probleme ali nisam nasao odgovor. Ili zato sto je ovako prost ili ga stvarno ljudi nisu resili :)

Evo koda
Code:

procedure SortirajDBGrid(Kolona: TColumn);
var tabela:ttable;
    grid:tdbgrid;
begin
  grid:=tdbgrid(Kolona.Grid);
  if assigned(grid.DataSource.DataSet) then begin
    tabela:=ttable(grid.DataSource.DataSet);
    if (tabela.State <> dsinactive) and (tabela.FieldDefs.IndexOf(kolona.FieldName)>-1) then begin
      tabela.DisableControls;
      try
        tabela.IndexName:=tabela.IndexDefs.find(kolona.FieldName).Name;
      except
        on edatabaseerror do begin
          tabela.IndexName:='';
          tabela.AddIndex(kolona.fieldname, Kolona.FieldName, [ixCaseinsensitive]);
          tabela.IndexName:=kolona.FieldName;
        end;
      end;
      tabela.enablecontrols;
    end;
  end;
end;