⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dragdropdemodata.cpp

📁 DevExpress ExpressQuantumGrid Suite v5.9 Full Source
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DragDropDemoData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxGridBandedTableView"
#pragma link "cxGridCardView"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma resource "*.dfm"
TDragDropDemoMainDM *DragDropDemoMainDM;
//---------------------------------------------------------------------------
__fastcall TDragDropDemoMainDM::TDragDropDemoMainDM(TComponent* Owner)
  : TDataModule(Owner)
{
}
//---------------------------------------------------------------------------

void ReopenDataset(TDataSet* AQuery)
{
  AQuery->DisableControls();
  try {
    AQuery->Close();
    AQuery->Open();
  }
  __finally {
    AQuery->EnableControls();
  }
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::qryFilmsBeforeDelete(
      TDataSet *DataSet)
{
  int Bounds[2] = {0,1};
  Variant KeyValues = VarArrayCreate(Bounds, 1, varInteger);
  KeyValues.PutElement(qryFilmsID->AsInteger, 0);
  KeyValues.PutElement(qryFilms->Params->Items[0]->Value, 1);
  if(tblFilmsGenres->Locate("FILMID;GENREID", KeyValues, TLocateOptions())) {
    int FilmID = -1;
    qryFilms->Next();
    if(!qryFilms->Eof)
      FilmID = qryFilmsID->AsInteger;
    tblFilmsGenres->Delete();
    ReopenDataset(qryFilms);
    if(!qryFilms->Locate("ID", FilmID, TLocateOptions()))
      qryFilms->Last();
  }
  Abort();
}
//---------------------------------------------------------------------------
void __fastcall TDragDropDemoMainDM::qryFilmsCompaniesBeforeDelete(
      TDataSet *DataSet)
{
  int Bounds[2] = {0,1};
  Variant KeyValues = VarArrayCreate(Bounds, 1, varInteger);
  KeyValues.PutElement(qryFilmsID->AsInteger, 0);
  KeyValues.PutElement(qryFilmsCompaniesCompanyID->AsInteger, 1);
  if(tblFilmsCompaniesStaff->Locate("FILMID;COMPANYID", KeyValues, TLocateOptions())) {
    DoNextRecord(this);
    KeyValues.PutElement(-1, 1);
    if(!qryFilmsCompanies->Eof)
      KeyValues.PutElement(qryFilmsCompaniesCompanyID->AsInteger, 1);

    tblFilmsCompaniesStaff->Delete();
    ReopenDataset(qryFilmsCompanies);

    qryFilmsCompanies->Locate("FILMID;COMPANYID", KeyValues, TLocateOptions());
  };
  Abort();
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::qryFilmsPersonsAfterPost(
      TDataSet *DataSet)
{
  ReopenDataset(tblFilmsPersonsStaff);
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::qryFilmsPersonsBeforeDelete(
      TDataSet *DataSet)
{
  int Bounds[2] = {0,2};
  Variant KeyValues = VarArrayCreate(Bounds, 1, varInteger);
  KeyValues.PutElement(qryFilmsID->AsInteger, 0);
  KeyValues.PutElement(qryFilmsPersonsPersonID->AsInteger, 1);
  KeyValues.PutElement(qryFilmsPersonsPersonLineID->AsInteger, 2);
  if(tblFilmsPersonsStaff->Locate("FILMID;PERSONID;PERSONLINEID", KeyValues, TLocateOptions())) {
    tblFilmsPersonsStaff->Delete();
    KeyValues.PutElement(-1, 1);
    KeyValues.PutElement(-1, 2);
    DoNextRecord(this);
    if(!qryFilmsPersons->Eof) {
      KeyValues.PutElement(qryFilmsPersonsPersonID->AsInteger, 1);
      KeyValues.PutElement(qryFilmsPersonsPersonLineID->AsInteger, 2);
    };
    ReopenDataset(qryFilmsPersons);
    qryFilmsPersons->Locate("FILMID;PERSONID;PERSONLINEID", KeyValues, TLocateOptions());
  };
  Abort();
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblPersonsAfterUpdate(
      TDataSet *DataSet)
{
  ReopenDataset(qryFilmsPersons);
  if(!qryFilmsPersons->Locate("PersonID", FPersonID, TLocateOptions()))
    qryFilmsPersons->Last();
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblPersonsBeforeUpdate(
      TDataSet *DataSet)
{
  FPersonID = DataSet->FieldByName("ID")->AsInteger;
  if(FPersonID == qryFilmsPersonsPersonID->AsInteger) {
    qryFilmsPersons->Next();
    FPersonID = -1;
    if(!qryFilmsPersons->Eof)
      FPersonID = qryFilmsPersonsPersonID->AsInteger;
  } else
    FPersonID = qryFilmsPersonsPersonID->AsInteger;
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblCompaniesAfterUpdate(
      TDataSet *DataSet)
{
  ReopenDataset(qryFilmsCompanies);
  if(!qryFilmsCompanies->Locate("CompanyID", FCompanyID, TLocateOptions()))
    qryFilmsCompanies->Last();
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblCompaniesBeforeUpdate(
      TDataSet *DataSet)
{
  FCompanyID = DataSet->FieldByName("ID")->AsInteger;
  if(FCompanyID == qryFilmsCompaniesCompanyID->AsInteger) {
    qryFilmsPersons->Next();
    FCompanyID = -1;
    if(!qryFilmsPersons->Eof)
      FCompanyID = qryFilmsCompaniesCompanyID->AsInteger;
  } else
    FCompanyID = qryFilmsCompaniesCompanyID->AsInteger;
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblFilmsDictAfterUpdate(
      TDataSet *DataSet)
{
  ReopenDataset(qryFilms);
  if(!qryFilms->Locate("ID", FFilmID, TLocateOptions()))
    qryFilms->Last();
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::tblFilmsDictBeforeUpdate(
      TDataSet *DataSet)
{
  FFilmID = DataSet->FieldByName("ID")->AsInteger;
  if(FFilmID == qryFilmsID->AsInteger) {
    qryFilms->Next();
    FFilmID = -1;
    if(!qryFilms->Eof)
      FFilmID = qryFilmsID->AsInteger;
  } else
    FFilmID = qryFilmsID->AsInteger;
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::DoNextRecord(TObject* Sender)
{
  if(FOnNextRecord)
    FOnNextRecord(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TDragDropDemoMainDM::qryFilmsPersonsCalcFields(
      TDataSet *DataSet)
{
  qryFilmsPersonsName->AsString = qryFilmsPersonsFIRSTNAME->AsString +
    " " + qryFilmsPersonsSECONDNAME->AsString;
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -