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

📄 pz_dmdic.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
字号:
unit PZ_DmDic;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ToolWin, ComCtrls, ExtCtrls, DBCtrls, Grids, DBGrids,
  DB, ADODB;

type
  TFrmPZ_DmDic = class(TForm)
    Bevel1: TBevel;
    ToolBar1: TToolBar;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    procedure FormShow(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure ADOQuery1BeforePost(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    FieldName, CardLx, CardValue: string;
    lxh: integer;
    procedure SzCheckRule;
    procedure SzLength(lxh: integer; var FirChar, SecChar: string; var CharLen:
      integer);
    procedure GetIcKh(var First: integer; var Second: integer; ValLen: integer);
    function CheckVald: Boolean;
  end;
function SetWork(AFieldName: string; var Bm: string; Lx: integer; ACardLx,
  ACardValue: string): Boolean;
function SetWork1(ADBGrid: TDBGrid; ADBEdit: TDBEdit; AIdentifyString: string;
  AFieldName: string; var Bm: string; Lx: integer; ACardLx, ACardValue: string):
  Boolean;
implementation

uses main;

{$R *.dfm}

function SetWork(AFieldName: string; var Bm: string; Lx: integer; ACardLx,
  ACardValue: string): Boolean;
var
  FrmPZ_DmDic: TFrmPZ_DmDic;
begin
  Result := False;
  Application.CreateForm(TFrmPZ_DmDic, FrmPZ_DmDic);
  with FrmPZ_DmDic do
  begin
    FieldName := AFieldName;
    CardLx := ACardLx;
    CardValue := ACardValue;
    lxh := Lx;
    if ShowModal = mrOK then
    begin
      if lxh = 6 then
        bm := FloatToStr(ADOQuery1.Fields[1].AsFloat)
      else if lxh = 10 then
        bm := Trim(ADOQuery1.Fields[1].AsString)
      else
        bm := IntToStr(ADOQuery1.Fields[1].AsInteger);
      ADOQuery1.Close;
      Result := True;
    end;
    Free;
  end;
end;

function SetWork1(ADBGrid: TDBGrid; ADBEdit: TDBEdit; AIdentifyString: string;
  AFieldName: string; var Bm: string; Lx: integer; ACardLx, ACardValue: string):
  Boolean;
var
  FrmPZ_DmDic: TFrmPZ_DmDic;
begin
  Result := False;
  Application.CreateForm(TFrmPZ_DmDic, FrmPZ_DmDic);
  with FrmPZ_DmDic do
  begin
    FieldName := AFieldName;
    CardLx := ACardLx;
    CardValue := ACardValue;
    lxh := Lx;
    if ShowModal = mrOK then
    begin
      if AIdentifyString = 'DBGrid' then
        ADBGrid.SelectedField.AsVariant := ADOQuery1.Fields[1].AsVariant
      else if AIdentifyString = 'DBEdit' then
        ADBEdit.Field.AsVariant := ADOQuery1.Fields[1].AsVariant;
      Result := True;
      ADOQuery1.Close;
    end;
    Free;
  end;
end;

procedure TFrmPZ_DmDic.FormShow(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID='
      + FrmMain.DbUser + ';Password=' + FrmMain.DbPass + ';Initial Catalog=' +
      FrmMain.DbName + ';Data Source=' + FrmMain.ServerName;
    Sql.Add('Select * ');
    Sql.Add('From Dic_' + Trim(FieldName));
    try
      Open;
    except
      ShowMessage('浏览编号数据库错误!');
      Exit;
    end;
  end;
end;

procedure TFrmPZ_DmDic.DBGrid1DblClick(Sender: TObject);
begin
  case lxh of
    1, 2, 3, 4, 6, 10: if DBGrid1.Fields[1].AsString = '' then
      begin
        ShowMessage('号码字段不能为空!');
        Exit;
      end;
    5: if DBGrid1.Fields[1].AsInteger = 0 then
      begin
        ShowMessage('号码字段不能为空!');
        Exit;
      end;
  end;
  ModalResult := mrOk;
end;

procedure TFrmPZ_DmDic.SzCheckRule;
var
  First1, Second1, ValLen: integer;
begin
  with ADOQuery1 do
    case lxh of
      1: Fields[1].EditMask := '2000';
      2: Fields[1].EditMask := '3000';
      3: Fields[1].EditMask := '500';
      4: Fields[1].EditMask := '900';
      5: Fields[1].EditMask := '5000';
      6: Fields[1].EditMask := '10000';
      10:
        begin
          GetIcKh(First1, Second1, ValLen);
          Fields[1].EditMask := IntToStr(First1) + IntToStr(Second1) + '000000';
        end;
    end;
  DBGrid1.Fields[0].FocusControl;
end;

procedure TFrmPZ_DmDic.SzLength(lxh: integer; var FirChar, SecChar: string; var
  CharLen: integer);
var
  First, Second: integer;
begin
  case lxh of
    1:
      begin
        FirChar := '2';
        CharLen := 4;
        Exit;
      end;
    2:
      begin
        FirChar := '3';
        CharLen := 4;
      end;
    3:
      begin
        FirChar := '5';
        CharLen := 3;
      end;
    4:
      begin
        FirChar := '9';
        CharLen := 3;
      end;
    5:
      begin
        FirChar := '5';
        CharLen := 4;
      end;
    6:
      begin
        FirChar := '1';
        CharLen := 5;
      end;
    10:
      begin
        GetIcKh(First, Second, 0);
        FirChar := IntToStr(First);
        SecChar := IntToStr(Second);
        CharLen := 8;
      end;
  end;
end;

procedure TFrmPZ_DmDic.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  //if Button=nbInsert then SzCheckRule;
  SzCheckRule;
end;

procedure TFrmPZ_DmDic.GetIcKh(var First: integer; var Second: integer; ValLen:
  integer);
var
  CardValue1: integer;
begin
  if CardLx = 'A' then
    First := 1;
  if CardLx = 'B' then
    First := 2;
  if CardLx = 'C' then
    First := 3;
  if CardLx = 'D' then
    First := 4;
  CardValue1 := StrToInt(CardValue);
  case CardValue1 of
    20: Second := 1;
    30: Second := 2;
    50: Second := 3;
    100: Second := 4;
  end;
  ValLen := 8;
end;

procedure TFrmPZ_DmDic.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  if not CheckVald then
    Abort;
end;

function TFrmPZ_DmDic.CheckVald: Boolean;
var
  First, Second, Hm, AFirst, ASecond: string;
  ValueLen, AValLen: integer;
begin
  Result := False;
  case lxh of
    6: Hm := Trim(FloatToStr(ADOQuery1.Fields[1].AsFloat));
    10: Hm := Trim(ADOQuery1.Fields[1].AsString);
  else
    Hm := Trim(IntToStr(ADOQuery1.Fields[1].AsInteger));
  end;
  First := Trim(copy(Hm, 1, 1));
  Second := Trim(copy(Hm, 2, 1));
  ValueLen := Length(Hm);
  SzLength(lxh, AFirst, ASecond, AValLen);
  case lxh of
    10: if (First <> AFirst) or (Second <> ASecond) or (ValueLen <> AValLen)
      then
      begin
        ShowMessage('号码的第一位应为' + AFirst + ',号码的第二位应为' + ASecond
          +
          ',号码的长度应为' + IntToStr(AValLen) + ',请重新输入!');
        Exit;
      end;
  else if (First <> AFirst) or (ValueLen <> AValLen) then
  begin
    ShowMessage('号码的第一位应为' + AFirst + ',号码的长度应为' +
      IntToStr(AValLen) + ',请重新输入!');
    Exit;
  end;
  end;
  Result := True;
end;
end.

⌨️ 快捷键说明

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