CliRefForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit CliRefForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, DB, DBClient, Grids, DBGrids, MConnect;
  6. type
  7.   TForm1 = class(TForm)
  8.     cds: TClientDataSet;
  9.     DCOMConnection1: TDCOMConnection;
  10.     DataSource1: TDataSource;
  11.     DBGrid1: TDBGrid;
  12.     Button1: TButton;
  13.     Button2: TButton;
  14.     ListBox1: TListBox;
  15.     Label1: TLabel;
  16.     procedure Button1Click(Sender: TObject);
  17.     procedure cdsAfterPost(DataSet: TDataSet);
  18.     procedure cdsAfterScroll(DataSet: TDataSet);
  19.     procedure Button2Click(Sender: TObject);
  20.     procedure FormCreate(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26. var
  27.   Form1: TForm1;
  28. implementation
  29. {$R *.dfm}
  30. type
  31.   TMyGrid = class (TDBGrid)
  32.   end;
  33. procedure TForm1.Button1Click(Sender: TObject);
  34. begin
  35.   if cds.ChangeCount = 0 then
  36.     cds.Refresh;
  37. end;
  38. procedure TForm1.cdsAfterPost(DataSet: TDataSet);
  39. begin
  40.   cds.ApplyUpdates (-1);
  41. end;
  42. procedure TForm1.cdsAfterScroll(DataSet: TDataSet);
  43. begin
  44.   // refresh current record only
  45.   if cds.UpdateStatus = usUnModified then
  46.     cds.RefreshRecord;
  47.   // log operation
  48.   Listbox1.Items.Add (cds['Emp_no']);
  49. end;
  50. procedure TForm1.Button2Click(Sender: TObject);
  51. var
  52.   i: Integer;
  53.   bm: TBookmarkStr;
  54. begin
  55.   // refresh visible rows
  56.   cds.DisableControls;
  57.   // start with the current row
  58.   i := TMyGrid(DbGrid1).Row;
  59.   bm := cds.Bookmark;
  60.   try
  61.     // get back t the first visible record
  62.     while i > 1 do
  63.     begin
  64.       cds.Prior;
  65.       Dec (i);
  66.     end;
  67.     // return to the current record
  68.     i := TMyGrid(DbGrid1).Row;
  69.     cds.Bookmark := bm;
  70.     // go ahead until the grid is complete
  71.     while i < TMyGrid(DbGrid1).RowCount do
  72.     begin
  73.       cds.Next;
  74.       Inc (i);
  75.     end;
  76.   finally
  77.     // set back everything and refresh
  78.     cds.Bookmark := bm;
  79.     cds.EnableControls;
  80.   end;
  81. end;
  82. procedure TForm1.FormCreate(Sender: TObject);
  83. begin
  84.   cds.Active := True;
  85. end;
  86. end.