home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 May / VPR9705A.ISO / VPR_DATA / PROGRAM / CBTRIAL / SETUP / DATA.Z / GDSDATA.CPP < prev    next >
C/C++ Source or Header  |  1997-02-14  |  5KB  |  139 lines

  1. //----------------------------------------------------------------------------
  2. //Borland C++Builder
  3. //Copyright (c) 1987, 1997 Borland International Inc. All Rights Reserved.
  4. //----------------------------------------------------------------------------
  5. //---------------------------------------------------------------------------
  6. #include <vcl.h>
  7. #pragma hdrstop
  8.  
  9. #include "GdsData.h"
  10. //---------------------------------------------------------------------------
  11. #pragma resource "*.dfm"
  12. TStdDataForm *StdDataForm;
  13. //---------------------------------------------------------------------------
  14. __fastcall TStdDataForm::TStdDataForm(TComponent* Owner)
  15.   : TGDSStdForm(Owner)
  16. {
  17. }
  18. //---------------------------------------------------------------------------
  19. void __fastcall TStdDataForm::FormCreate(TObject *Sender)
  20. {
  21.   FLastDate = EncodeDate(1995, 1, 1);
  22.   FLastAmount = 1000;
  23.   FilterOnRadioGroup->ItemIndex = 0;
  24. }
  25.  
  26. /* Calculate the value of AmountDue. Used in the OnCalcFields
  27.   and OnFilterRecord event handlers. */
  28.  
  29. double __fastcall TStdDataForm::CalcAmountDue(void)
  30. {
  31.   return OrdersItemsTotal->Value * (1.0 + OrdersTaxRate->Value / 100) +
  32.     OrdersFreight->Value - OrdersAmountPaid->Value;
  33. }
  34.  
  35. //---------------------------------------------------------------------
  36. void __fastcall TStdDataForm::FilterOnRadioGroupClick(TObject *Sender)
  37. {
  38.    FilterOnLabel->Caption =
  39.      FilterOnRadioGroup->Items->Strings[FilterOnRadioGroup->ItemIndex];
  40.    switch (FilterOnRadioGroup->ItemIndex)
  41.      {
  42.      case 0:
  43.           Orders->OnFilterRecord = OrdersFilterOnDate;
  44.           FilterCriteria->Text = AnsiString(FLastDate);
  45.         break;
  46.      case 1:
  47.           Orders->OnFilterRecord = OrdersFilterOnAmount;
  48.           FilterCriteria->Text = AnsiString(FLastAmount);
  49.         break;
  50.      }
  51.    ActiveControl = FilterCriteria;
  52.  
  53.   if (Orders->Filtered)
  54.     Orders->Refresh();
  55. }
  56.  
  57. /* Convert the FilterCriteria text into a Date or Float.  This value
  58.   will be used in the OnFilterRecord callback instead of using the
  59.   FilterCriteria directly, so that the string does not need to be
  60.   converted each time the event is triggered. */
  61.  
  62. void __fastcall TStdDataForm::ConvertFilterCriteria(void)
  63. {
  64.   if (FilterCriteria->Text != "")
  65.        {
  66.     switch (FilterOnRadioGroup->ItemIndex)
  67.       {
  68.       case 0:
  69.               FLastDate = StrToDate(FilterCriteria->Text);
  70.               break;
  71.       case 1:
  72.               FLastAmount = StrToFloat(FilterCriteria->Text);
  73.               break;
  74.       }
  75.     }
  76.   if (Orders->Filtered) Orders->Refresh();
  77. }
  78.  
  79. //---------------------------------------------------------------------
  80. void __fastcall TStdDataForm::FilterCriteriaExit(TObject *Sender)
  81. {
  82.   ConvertFilterCriteria();
  83. }
  84. //---------------------------------------------------------------------
  85. void __fastcall TStdDataForm::FilterCriteriaKeyPress(TObject *Sender,
  86.       Char &Key)
  87. {
  88.   if (Key == 0x13)
  89.   {
  90.     ConvertFilterCriteria();
  91.     Key = 0x00;
  92.   }
  93. }
  94.  
  95. /* Calculate this order's total on the fly. Include in the dataset
  96.   if its amount is greater than or equal to the specified filter
  97.   criteria. Note that calculated and lookup fields are undefined
  98.   in an OnFilterRecord event handler. */                   
  99. void __fastcall TStdDataForm::OrdersFilterOnAmount(TDataSet * DataSet, bool & Accept)
  100. {
  101.   Accept = (CalcAmountDue() >= FLastAmount);
  102. }
  103.  
  104. /* Include this order in the dataset if its date is greater
  105.   than or equal to the specified filter criteria. */
  106. void __fastcall TStdDataForm::OrdersFilterOnDate(TDataSet * DataSet, bool & Accept)
  107. {
  108.   Accept = (OrdersSaleDate->Value >= FLastDate);
  109. }
  110.  
  111. void __fastcall TStdDataForm::OrdersCalcFields(TDataSet * DataSet)
  112. {
  113.   OrdersTaxAmount->Value = OrdersItemsTotal->Value * (OrdersTaxRate->Value / 100);
  114.   OrdersAmountDue->Value = CalcAmountDue();
  115. }
  116.  
  117. //---------------------------------------------------------------------
  118. void __fastcall TStdDataForm::FilterCheckBoxClick(TObject *Sender)
  119. {
  120.   ConvertFilterCriteria();
  121.   Orders->Filtered = FilterCheckBox->Checked;
  122.   NextBtn->Enabled = ! FilterCheckBox->Checked;
  123.   PriorBtn->Enabled = ! FilterCheckBox->Checked;
  124. }
  125. //---------------------------------------------------------------------
  126. void __fastcall TStdDataForm::NextBtnClick(TObject *Sender)
  127. {
  128.   ConvertFilterCriteria();
  129.   Orders->FindNext();
  130. }
  131. //---------------------------------------------------------------------
  132. void __fastcall TStdDataForm::PriorBtnClick(TObject *Sender)
  133. {
  134.   ConvertFilterCriteria();
  135.   Orders->FindPrior();
  136. }
  137. //---------------------------------------------------------------------
  138.  
  139.