home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / Runimage / Delphi50 / Demos / Db / Cachedup / cachedup.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  4.4 KB  |  156 lines

  1. unit CachedUp;
  2.  
  3. { This demo uses the IBLOCAL alias which is setup by the install program
  4.   when you install Delphi and you have installed Local Interbase.
  5.  
  6.   See the file ABOUT.TXT for a description of this demo. }
  7.  
  8. interface
  9.  
  10. uses
  11.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  12.   DBTables, DB, Grids, DBGrids, TypInfo, StdCtrls, Menus, ExtCtrls, DBCtrls,
  13.   Buttons;
  14.  
  15. type
  16.   TCacheDemoForm = class(TForm)
  17.     DBGrid1: TDBGrid;
  18.     MainMenu1: TMainMenu;
  19.     miAbout: TMenuItem;
  20.     DBNavigator1: TDBNavigator;
  21.     GroupBox1: TGroupBox;
  22.     UnmodifiedCB: TCheckBox;
  23.     ModifiedCB: TCheckBox;
  24.     InsertedCB: TCheckBox;
  25.     DeletedCB: TCheckBox;
  26.     Panel1: TPanel;
  27.     CachedUpdates: TCheckBox;
  28.     UseUpdateSQL: TCheckBox;
  29.     Panel2: TPanel;
  30.     ApplyUpdatesBtn: TButton;
  31.     CancelUpdatesBtn: TButton;
  32.     RevertRecordBtn: TButton;
  33.     ReExecuteButton: TButton;
  34.     procedure ApplyUpdatesBtnClick(Sender: TObject);
  35.     procedure ToggleUpdateMode(Sender: TObject);
  36.     procedure miAboutClick(Sender: TObject);
  37.     procedure CancelUpdatesBtnClick(Sender: TObject);
  38.     procedure RevertRecordBtnClick(Sender: TObject);
  39.     procedure UpdateRecordsToShow(Sender: TObject);
  40.     procedure FormCreate(Sender: TObject);
  41.     procedure ReExecuteButtonClick(Sender: TObject);
  42.     procedure UseUpdateSQLClick(Sender: TObject);
  43.   private
  44.     { Private declarations }
  45.     FDataSet: TDBDataSet;
  46.     procedure SetControlStates(Enabled: Boolean);
  47.   public
  48.     { Public declarations }
  49.   end;
  50.  
  51. var
  52.   CacheDemoForm: TCacheDemoForm;
  53.  
  54. implementation
  55.  
  56. {$R *.DFM}
  57.  
  58. uses
  59.   About, ErrForm, DataMod;
  60.  
  61. { This method enables and disables controls when cached updates are
  62.   turned on and off }
  63.  
  64. procedure TCacheDemoForm.SetControlStates(Enabled: Boolean);
  65. begin
  66.   ApplyUpdatesBtn.Enabled := Enabled;
  67.   CancelUpdatesBtn.Enabled := Enabled;
  68.   RevertRecordBtn.Enabled := Enabled;
  69.   UnmodifiedCB.Enabled := Enabled;
  70.   ModifiedCB.Enabled := Enabled;
  71.   InsertedCB.Enabled := Enabled;
  72.   DeletedCB.Enabled := Enabled;
  73.   UseUpdateSQL.Enabled := Enabled;
  74. end;
  75.  
  76. procedure TCacheDemoForm.FormCreate(Sender: TObject);
  77. begin
  78.   FDataSet := CacheData.CacheDS.DataSet as TDBDataSet;
  79.   FDataSet.CachedUpdates := CachedUpdates.Checked;
  80.   SetControlStates(FDataSet.CachedUpdates);
  81.   FDataSet.Open;
  82. end;
  83.  
  84. procedure TCacheDemoForm.ToggleUpdateMode(Sender: TObject);
  85. begin
  86.   { Toggle the state of the CachedUpdates property }
  87.   FDataSet.CachedUpdates := not FDataSet.CachedUpdates;
  88.   { Enable/Disable Controls }
  89.   SetControlStates(FDataSet.CachedUpdates);
  90. end;
  91.  
  92. procedure TCacheDemoForm.miAboutClick(Sender: TObject);
  93. begin
  94.   ShowAboutDialog;
  95. end;
  96.  
  97. procedure TCacheDemoForm.ApplyUpdatesBtnClick(Sender: TObject);
  98. begin
  99.   FDataSet.Database.ApplyUpdates([FDataSet]);
  100. end;
  101.  
  102. procedure TCacheDemoForm.CancelUpdatesBtnClick(Sender: TObject);
  103. begin
  104.  FDataSet.CancelUpdates;
  105. end;
  106.  
  107. procedure TCacheDemoForm.RevertRecordBtnClick(Sender: TObject);
  108. begin
  109.   FDataSet.RevertRecord;
  110. end;
  111.  
  112. { This event is triggered when the user checks or unchecks one
  113.   of the "Show Records" check boxes.  It translates the states
  114.   of the checkboxes into a set value which is required by the
  115.   UpdateRecordTypes property of TDataSet.  The UpdateRecordTypes
  116.   property controls what types of records are included in the
  117.   dataset.  The default is to show only unmodified modified
  118.   and inserted records.  To "undelete" a record, you would
  119.   check the Deleted checkbox, then position the grid to the
  120.   row you want to undelete and finally click the Revert Record
  121.   Button }
  122.  
  123. procedure TCacheDemoForm.UpdateRecordsToShow(Sender: TObject);
  124. var
  125.   UpdRecTypes : TUpdateRecordTypes;
  126. begin
  127.   UpdRecTypes := [];
  128.   if UnModifiedCB.Checked then
  129.     Include(UpdRecTypes, rtUnModified);
  130.   if ModifiedCB.Checked then
  131.     Include(UpdRecTypes, rtModified);
  132.   if InsertedCB.Checked then
  133.     Include(UpdRecTypes, rtInserted);
  134.   if DeletedCB.Checked then
  135.     Include(UpdRecTypes, rtDeleted);
  136.   FDataSet.UpdateRecordTypes := UpdRecTypes;
  137. end;
  138.  
  139. procedure TCacheDemoForm.ReExecuteButtonClick(Sender: TObject);
  140. begin
  141.   FDataSet.Close;
  142.   FDataSet.Open;
  143. end;
  144.  
  145. procedure TCacheDemoForm.UseUpdateSQLClick(Sender: TObject);
  146. begin
  147.   FDataSet.Close;
  148.   if UseUpdateSQL.Checked then
  149.     FDataSet.UpdateObject := CacheData.UpdateSQL
  150.   else
  151.     FDataSet.UpdateObject := nil;
  152.   FDataSet.Open;
  153. end;
  154.  
  155. end.
  156.