[ itf @ 09.11.2008. 19:06 ] @
Imam problem sa sortiranjem BROJEVNIH stupaca. Naime,

U OnTitleClick eventu imam definirano:

Code:
...
if(Column->Field->Index == 4) {
    DM1->TProjekt->Sort = "GodinaIzrade ASC";
...
}

I on mi to uporno neće da sortira. Na isti način sortiram i stupce u kojima su stringovi i radi bez problema, no samo s ovim neće, a on je stupac u kojemu se nalaze brojevi.

pokušao sam i:

Code:
...
if(Column->Field->Index == 4) {
    DM1->TProjekt->IndexFieldNames = "GodinaIzrade ASC";
...
}

ali opet isto. Uglavnom, napravi on nešto, tj. nekako čudno poredba zapise ali ne sortirano. Ideje?
[ X Files @ 09.11.2008. 21:12 ] @
Probao sam na test primeru i radi kako se očekuje.

Proveri kog tipa je polje, da li indeksiranje tog polja imaja nekog uticaja, CursorLocation, da se možda još neki event ne trigeruje zajedno sa OnTitleClick... mada si verovatno sve od toga vec pokusao.
[ itf @ 09.11.2008. 21:26 ] @
Ja sam cijelu stvar postavio ovako:

Code:
void __fastcall TFGlavni::DBGrid1TitleClick(TColumn *Column)
{
    static index = 1;

    if(index == 0)
    {
        if(Column->Field->Index == 1) {
            DM1->TProjekt->IndexFieldNames = "Naziv ASC";
            index = 1;
        }
        if(Column->Field->Index == 2) {
            DM1->TProjekt->IndexFieldNames = "BrojProjekta ASC";
            index = 2;
        }
        if(Column->Field->Index == 3) {
            DM1->TProjekt->IndexFieldNames = "ArhivskiBroj ASC";
            index = 3;
        }
        if(Column->Field->Index == 4) {
            DM1->TProjekt->IndexFieldNames = "GodinaIzrade ASC";
            index = 4;
        }
        if(Column->Field->Index == 5) {
            DM1->TProjekt->IndexFieldNames = "Investitor ASC";
            index = 5;
        }
    }
    else
    {
        if(index == 1){
            DM1->TProjekt->IndexFieldNames = "Naziv DESC";
            index = 0;
        }
        if(index == 2){
            DM1->TProjekt->IndexFieldNames = "BrojProjekta DESC";
            index = 0;
        }
        if(index == 3){
            DM1->TProjekt->IndexFieldNames = "ArhivskiBroj DESC";
            index = 0;
        }
        if(index == 4){
            DM1->TProjekt->IndexFieldNames = "GodinaIzrade DESC";
            index = 0;
        }
        if(index == 5){
            DM1->TProjekt->IndexFieldNames = "Investitor DESC";
            index = 0;
        }
    }
}


U početku sortirano je po prvom stupcu (ASC), a dalje ako se na isti stupac klikne onda se sortira po DESC. I sve radi osim tog 4. stupca...

Sada sam stavio dva TButtona koji zasebno rade ASC i DESC nad tim stupcem i to radi bez greške, no u ovom gore kodu neće.. a svi ostali stupci se sortiraju bez problema...
[ X Files @ 09.11.2008. 22:30 ] @
Stvarno ne znam, mozda ima neki skriveni bug u tom kodu, cim sve radi na test primerima sa Button-ima. Probaj na primer ovo /netestirano/ pa javi sta se dogadja:

Code:

void __fastcall TFGlavni::DBGrid1TitleClick(TColumn *Column)
{
    static bool Polje[ ovde_upisi_broj_polja_kao_konstantu ] = { false }; // Broj polja: ShowMessage(  DM1->TProjekt->FieldCount );
    AnsiString Redosled;
    if ( ! Polje[Column->Field->Index] )
        Redosled = " ASC";
    else
        Redosled = " DESC";

    Polje[ Column->Field->Index ] = !Polje[ Column->Field->Index ];
    DM1->TProjekt->IndexFieldNames = Column->FieldName + Redosled;
}

[ itf @ 09.11.2008. 22:50 ] @
Ma poludit ću više s ovim DBGridom. Već sam im sada napisao report glede njega na codegear.com pa da vidim što će reći jer funkcionalan DBGrid tražim više od dvije godine.

http://qc.codegear.com/wc/qcmain.aspx?d=68747

A ako sve propadne kupiti ću ovo:

(pogledaj slike)
http://www.x-files.pl/components/xdbgrid.html

Da nisi možda ti autor ovoga? :)

A glede ovoga gore koda.. U svakom slučaju taj koncept s poljem koji pamti stanja je bolji pa ću se na tome bazirati. Ali tek sutra. Sad je kasno. Hvala.