[ itf @ 04.12.2008. 12:51 ] @
Koristim gore navedeni grid i jedino me muči kako pomoću njega napraviti automatsko sortiranje podataka po odabranim kolonama. On u header-u dopušta odabir višestrukih kolona i način sortiranja (ASC, DESC), no samo sortiranje nije automatsko već izgleda da treba pisati code. Vidio sam da postoji event OnCanSort, no još nisam našao niti jedan adekvatan primjer kako se to koristi.

Ima itko da je radio s ovime?
[ itf @ 05.12.2008. 09:08 ] @
Evo, uspio sam napraviti rješenje pa ako će ikome trebati ovdje je:

Code:
void __fastcall TFGlavni::DBG1ClickSort(TObject *Sender, int ACol)
{
    // DBG1->SortSettings->Show = true;
    // DBG1->SortSettings->IndexShow = false;

    AnsiString Kolona = DataModul->TOdgovori->Fields->FieldByNumber(ACol)->FieldName;
    if(DBG1->SortSettings->Direction == sdDescending) Kolona = Kolona + " DESC";
    DataModul->TOdgovori->IndexFieldNames = Kolona;
}

Sortiranje se odvija direktno preko DataSet-a, a ne virtualno u gridu. Ovaj gornji primjer se koristi za sortiranje po jednom stupcu i za funkcioniranje ovog koda potrebno je u DataSet komponenti dodati sva polja (kolone), te da je raspored polja (kolona) u DataSet-u jednak rasporedu kolona u gridu.

Za sortiranje po više stupaca potrebno je mnogo više komplikacija jer DBG1->SortSettings->Direction se ne mijenja automatski već vi sami morate dohvatiti sve indekse pa onda "ručno" ispitivati redoslijed. Još nisam do kraja rješio i taj način sortiranja jer mi to u pravilu sada niti ne treba, pa ako riješim stavim ovdje.