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

BCB - DBGrid bookmark

[es] :: C/C++ programiranje :: BCB - DBGrid bookmark

[ Pregleda: 2371 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon BCB - DBGrid bookmark15.10.2007. u 15:46 - pre 201 meseci
Postoji li funkcija koja mi odjednom može napraviti bookmark svih zapisa u DBGridu? Nikako da pronađem...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 17:16 - pre 201 meseci
Ja nisam upoznat da može odjednom.

Alternativa je da se kreira niz TBookmark-ova (od TDataSet::RecordCount elemenata), pa da se redom markira element po element (GetBookmark()), ali to već znaš i sam.

E sad, ne znam koliko vremena bi ovo uzelo,jer se mora biti pozicioniran za vreme markiranja.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 17:33 - pre 201 meseci
U tome i jest problem jer imam na tisuće zapisa i samo "šetanje" mi traje jako puno vremena...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 17:53 - pre 201 meseci
Jesi li probao:

Na početku petlje:
TDataSet::DisableControls()

// ... petlja

...i na kraju petlje:
TDataSet::EnableControls()

(to bi trebalo da ubrza petlju, jer nema više pozicioniranja data awere kontrola, ali opet ne znam da li je to dovoljno ubrzanje za ono što tebi treba)
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 18:02 - pre 201 meseci
Da, samo što sam ja radio alternativno skrivajući DBGrid. Uglavnom, šteta što nema direktno neke funkcije za ovu upotrebu...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 18:07 - pre 201 meseci
Ne znam zašto si mislio da koristiš baš toliku Bookmark tabelu, ali BCB ima jako dobru Lookup() funkciju koja može da pretražuje po sadržaju više polja odjednom. Pri tome interno koristi i indekse (zbog brzine) ako su postavljeni...
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 18:17 - pre 201 meseci
Ovako...

Radim program za generiranje testova na faksu, a testovi su sa višestrukim odgovorima. Pitanja ima oko 60 000 iz razno raznih područja i admin mora selektirati od kojih pitanja želi sastaviti test. Ukoliko on primjerice odabere samo 10 pitanja a test se sastoji od 5 pitanja onda će program slučajnim odabirom iz tih OZNAČENIH 10 izabrati samo 5. Ono što ja želim omogućiti jest da odjednom može označiti sva pitanja i da među njima onda može slučajno izabrati N pitanja.
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 18:57 - pre 201 meseci
> Radim program za generiranje testova na faksu, a testovi su sa višestrukim odgovorima. Pitanja ima oko 60 000 iz razno raznih područja i
> admin mora selektirati od kojih pitanja želi sastaviti test. Ukoliko on primjerice odabere samo 10 pitanja a test se sastoji od 5 pitanja onda
> će program slučajnim odabirom iz tih OZNAČENIH 10 izabrati samo 5. Ono što ja želim omogućiti jest da odjednom može označiti sva pitanja i
> da među njima onda može slučajno izabrati N pitanja.

Ako ti treba lista selektovanih onda koristi SelectedRows properti. Ako hoćeš da napraviš listu svih slogova, imaš ih već u datasetu i dodatna lista je nepotrebna.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB - DBGrid bookmark15.10.2007. u 19:04 - pre 201 meseci
Ne znam kako si zamislio GUI, tj. da li stavke biras visestrukom selekcijom, ili ih prebacujes u posebu listu/grid. Ako je u pitanju visestruka selekcija, onda kako i savkic rece, postoji SelectedRaws[] koji se lepo moze upotrebiti.

Evo ga primer za SelectedRaws /iz BCB Help-a/ a sad vidim (prvi put) da postoji i GotoBookmark() sa void* kastovanjem na selektovanu stavku. Moze se korisno upotrebiti.

Code:

The following example copies the selected rows in a db grid to a list box.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (DBGrid1->SelectedRows->Count > 0)
  {
    AnsiString s = "";
    TDataSet *pDS = DBGrid1->DataSource->DataSet;
    for (int i=0; i < DBGrid1->SelectedRows->Count; i++)
    {
      pDS->GotoBookmark((void *)DBGrid1->SelectedRows->Items[i].c_str());
      for (int j = 0; j < pDS->FieldCount; j++)
      {
        if (j>0)
          s = s+", ";

        s = s + pDS->Fields->Fields[j]->AsString;
      }
      ListBox1->Items->Add(s);
      s = "";
    }
  }
}

 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: BCB - DBGrid bookmark16.10.2007. u 08:24 - pre 201 meseci
Krivo ste me shvatili.

Znam ja kako doći do označenih odgovora, ali meni treba da ih nekako odjednom sve označim, a da ne moram ići sekvencijalno u kodu označavati ih jedan po jedan (jer time gubim dosta vremena).

Znači: Da li se odjednom nekom funkcijom mogu označiti svi zapisi u gridu jer želim napraviti nešto tipa SELECT ALL.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB - DBGrid bookmark16.10.2007. u 08:47 - pre 201 meseci
Probaj ovako /DBGrid > Options > MultiSelect=true/:
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if ( DBGrid1->DataSource->DataSet->RecordCount < 1 )
      return;

   try
   {
      DBGrid1->DataSource->DataSet->DisableControls();
      DBGrid1->DataSource->DataSet->First();
      do
      {
         DBGrid1->SelectedRows->CurrentRowSelected = true;
      } while( DBGrid1->DataSource->DataSet->FindNext() );
   }
   __finally
   {
      DBGrid1->DataSource->DataSet->EnableControls();
   }
}


EDIT: Ako nema slogova, vrati se iz funkcije (Samo treba proveriti ono <1. Secam se da sam nekad imao cudne vrednosti RecordCount kad je u pitanju prazan grid, u smislu, nekad je RecordCount jednak -1 a nekad 0. Ne secam se.)

[Ovu poruku je menjao X Files dana 16.10.2007. u 09:57 GMT+1]
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.237.*



+9 Profil

icon Re: BCB - DBGrid bookmark16.10.2007. u 09:00 - pre 201 meseci
To me i zanimalo da li se može drukčije jer ja već imam ovo:

Code:
.
.
  GridPitanja->DataSource->DataSet->First();
  while(!GridPitanja->DataSource->DataSet->Eof)
  {
     GridPitanja->SelectedRows->CurrentRowSelected = true;
     GridPitanja->DataSource->DataSet->Next();
 }
.
.


Ništa onda. Mora biti sekvencijalno i to je to. Hvala svima.

EDIT:

sa ovim Eof možeš riješiti problem provjere broja slogova

[Ovu poruku je menjao itf dana 16.10.2007. u 10:16 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: BCB - DBGrid bookmark

[ Pregleda: 2371 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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