XE4 不用把 TBookmark 强制转换为void *了
void __fastcall TForm1::DS2DataChange(TObject *Sender, TField *Field) { if (Customers->Bof) Button2->Enabled = False; else Button2->Enabled = True; } void __fastcall TForm1::Button2Click(TObject *Sender) { TBookmark SavePlace; Variant PrevValue; // Get a bookmark so that you can return to the same record. SavePlace = Customers->GetBookmark(); Customers->FindPrior();// Move to prior record. PrevValue = Customers->FindField("Field1")->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. Customers->GotoBookmark(SavePlace); Customers->Edit(); Customers->FindField("Field1")->Value = PrevValue; // Set the value. }
XE4
pDS->GotoBookmark((void *)DBGridEh2->SelectedRows->Items[i].c_str());
change to
pDS->GotoBookmark((TBookmark )DBGridEh2->SelectedRows->Items[i]);
for (int i = 0; i <DBGrid1->SelectedRows->Count; i++) { ADOQueryPub->GotoBookmark((TBookmark)DBGrid1->SelectedRows->Items[i]); ADOQueryPub->FieldByName("ComputerName")->AsString.Trim(); }