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

📄 unit1.pas

📁 最新的 DBGRIDEH4.0
💻 PAS
字号:
unit Unit1;

{$I EhLib.Inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
{$IFDEF EH_LIB_6} Variants, {$ENDIF}
  Db, GridsEh, DBGridEh, DBTables, DataDriverEh, MemTableEh, MemTableDataEh,
  DBCtrlsEh, StdCtrls;

type
  TForm1 = class(TForm)
    MemTableEh1: TMemTableEh;
    DataSetDriverEh1: TDataSetDriverEh;
    Table1: TTable;
    DBGridEh1: TDBGridEh;
    DataSource1: TDataSource;
    Label1: TLabel;
    procedure DataSetDriverEh1BuildDataStruct(DataDriver: TDataDriverEh;
      DataStruct: TMTDataStructEh);
    procedure DataSetDriverEh1ReadRecord(DataDriver: TDataDriverEh;
      MemTableData: TMemTableDataEh; MemRec: TMemoryRecordEh;
      var ProviderEOF: Boolean);
    procedure MemTableEh1SetFieldValue(MemTable: TCustomMemTableEh;
      Field: TField; var Value: Variant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DataSetDriverEh1BuildDataStruct(DataDriver: TDataDriverEh;
  DataStruct: TMTDataStructEh);
var
  DataField: TMTDataFieldEh;
begin
  DataSetDriverEh1.DefaultBuildDataStruct(DataStruct);

  DataField := DataStruct.CreateField(TMTDateTimeDataFieldEh);
  DataField.FieldName := 'LastInvoiceDate1';
  TMTDateTimeDataFieldEh(DataField).DateTimeDataType :=  fdtDateEh;

  DataField := DataStruct.CreateField(TMTDateTimeDataFieldEh);
  DataField.FieldName := 'LastInvoiceTime1';
  TMTDateTimeDataFieldEh(DataField).DateTimeDataType :=  fdtTimeEh;
end;

procedure TForm1.DataSetDriverEh1ReadRecord(DataDriver: TDataDriverEh;
  MemTableData: TMemTableDataEh; MemRec: TMemoryRecordEh;
  var ProviderEOF: Boolean);
var
  Field: TField;
begin
  Field := DataSetDriverEh1.ProviderDataSet.FieldByName('LastInvoiceDate');
  if not Field.IsNull then
  begin
    MemRec.DataValues['LastInvoiceDate1', dvvValueEh] := Integer(Trunc(Field.AsDateTime));
    MemRec.DataValues['LastInvoiceTime1', dvvValueEh] := Frac(Field.AsDateTime);
  end;
  DataSetDriverEh1.DefaultReadRecord(MemTableData, MemRec, ProviderEOF);
end;

procedure TForm1.MemTableEh1SetFieldValue(MemTable: TCustomMemTableEh;
  Field: TField; var Value: Variant);
begin
  if (Field.FieldName = 'LastInvoiceDate1') then
  begin
    if not VarIsNull(Value) and Value < EncodeDate(1900, 1, 1) then
      raise Exception.Create('Date is too low');
    MemTable.FieldByName('LastInvoiceDate').AsDateTime
      := MemTable.FieldByName('LastInvoiceTime1').AsDateTime + Field.AsDateTime;

  end;
  if (Field.FieldName = 'LastInvoiceTime1') then
    MemTable.FieldByName('LastInvoiceDate').AsDateTime
      := MemTable.FieldByName('LastInvoiceDate1').AsDateTime + Field.AsDateTime;
end;

initialization
  DefFontData.Name := 'Microsoft Sans Serif';
end.

⌨️ 快捷键说明

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