Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sortiranje DBGrid-a

[es] :: C/C++ programiranje :: Sortiranje DBGrid-a

[ Pregleda: 1531 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Sortiranje DBGrid-a09.11.2008. u 19:06 - pre 188 meseci
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?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Sortiranje DBGrid-a09.11.2008. u 21:12 - pre 188 meseci
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.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: Sortiranje DBGrid-a09.11.2008. u 21:26 - pre 188 meseci
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...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Sortiranje DBGrid-a09.11.2008. u 22:30 - pre 188 meseci
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;
}

 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: Sortiranje DBGrid-a09.11.2008. u 22:50 - pre 188 meseci
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.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Sortiranje DBGrid-a

[ Pregleda: 1531 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.