Avatar billede codesmurf Nybegynder
20. februar 2003 - 16:21 Der er 2 kommentarer og
1 løsning

Slet fra DBGrid og opdatere hvor indicatoren peger...

Program: Borland C++ Builder 6

Jeg har et DBGrid hvori der er en del records. Hvis jeg sletter en af disse records vil jeg gerne opdatere mit grid og derefter sætte indicatoren (lille trekant i venstre side af grid'et) udfor den næste record i grid'et. MEN når jeg refresher mit grid (lukker min query og åbner den igen) ryger indicatoren automatisk op til den første record og jeg aner ikke hvordan man flytter den "manuelt" ned til hvor jeg kom fra.
Nogen idéer?

(Ovenstående skal også bruges i tilfælde af at folk editerer en record. Der skal grid'et også opdateres og indicatoren skal sættes der hvor folk har opdateret. DBGrid'et er det eneste data-aware objekt jeg bruger, dvs. ingen DBEditBoxes etc. Jeg bruger almindelige dropdownboxes og editboxes til at vise indholdet af en valgt record i grid'et og selve grid'et er read-only)
Avatar billede susrn Nybegynder
20. februar 2003 - 19:48 #1
Hejsa
Jeg tror du kan bruge bookmark egenskaben, følgende er hentet fra borland c++ hjælp.

  TBookmark SavePlace;
  Variant PrevValue;

  // get a bookmark so that we can return to the same record

  SavePlace = ClientDataSet1->GetBookmark();

  ClientDataSet1->FindPrior();// move to prior record

  PrevValue = ClientDataSet1->Fields->Fields[0]->Value; // get the value

  // Move back to the bookmark

  // this may not be the next record anymore
  // if something else is changing the dataset asynchronously
  ClientDataSet1->GotoBookmark(SavePlace);
  ClientDataSet1->Fields->Fields[0]->Value = PrevValue; // set the value
  ClientDataSet1->FreeBookmark(SavePlace);

}

To ensure that the button is disabled when there is no previous record, the OnDataChange event of the DataSource detects when the user moves to the beginning of file (BOF property becomes true), and disables the button.

void __fastcall TForm1::ClientDataSet1DataChange(TObject *Sender, TField *Field)

{
  CopyData->Enabled = !ClientDataSet1->Bof;
}
Avatar billede codesmurf Nybegynder
21. februar 2003 - 09:42 #2
Helt kanon...havde godt siddet og kigget på bookmark, men kunne ikke helt få det til at virke. Og til orientering så behøver man ikke nødvendigvis en ClientDataSet komponent, man kan gøre det direkt på en query.
Tak for hjælpen! Det var alle pointene værd
Avatar billede susrn Nybegynder
21. februar 2003 - 23:16 #3
:-) rart at kunne hjælpe!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester