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

📄 sys910_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
unit Sys910_02;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons, ComCtrls, dxExEdtr, dxCntner,
  dxTL, dxDBCtrl, dxDBGrid, DB, ADODB, DBCtrls, dxDBTLCl, dxGrClms, Menus,
  Grids, Wwdbigrd, Wwdbgrid, Mask, StrUtils, Wwdotdot, wwdbedit, Wwdbcomb;

type
  TSys910_02Form = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Bevel1: TBevel;
    bbtnBack: TBitBtn;
    bbtnNext: TBitBtn;
    bbtnExit: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    lblStartMsg1: TLabel;
    lblStartMsg3: TLabel;
    lblStartMsg2: TLabel;
    lblAlterName: TLabel;
    edtAlterName: TEdit;
    lblConditions: TLabel;
    TabSheet5: TTabSheet;
    TabSheet6: TTabSheet;
    TabSheet7: TTabSheet;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    lblShowMsg: TLabel;
    edtShowMsg: TEdit;
    dxDBGrid1: TdxDBGrid;
    lblReceive: TLabel;
    edtReceive: TEdit;
    lblUserList: TLabel;
    dxDBGrid1Field: TdxDBGridMaskColumn;
    dxDBGrid1FieldName: TdxDBGridMaskColumn;
    dsFields: TDataSource;
    adsFields: TADODataSet;
    adsFieldsField: TStringField;
    adsFieldsFieldName: TStringField;
    dsTables: TDataSource;
    lblCond: TLabel;
    edtCond: TEdit;
    qrySys910B: TADOQuery;
    dsSys910B: TDataSource;
    adsFieldsFieldType: TSmallintField;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    RichEdit1: TRichEdit;
    lblFunction: TLabel;
    lblFieldName: TLabel;
    lblExpression: TLabel;
    lbFields: TDBLookupListBox;
    dsSys500A: TDataSource;
    qrySys910BS910B_001: TIntegerField;
    qrySys910BS910B_002: TIntegerField;
    adsSys500A: TADODataSet;
    adsSys500AFUserNo: TIntegerField;
    adsSys500AFUserName: TStringField;
    adsSys500AFAlter: TBooleanField;
    adsSys500AFEMail: TBooleanField;
    adsSys500AFSMS: TBooleanField;
    PopupMenu1: TPopupMenu;
    mmiAll: TMenuItem;
    mmiNotSel: TMenuItem;
    qrySys910BS910B_003: TBooleanField;
    qrySys910BS910B_004: TBooleanField;
    dbgConditions: TdxDBGrid;
    dbgConditionsFCode: TdxDBGridColumn;
    dbgConditionsFName: TdxDBGridColumn;
    dbgConditionsFSelected: TdxDBGridCheckColumn;
    adsTables: TADODataSet;
    qryTables: TADOQuery;
    dbgUser: TwwDBGrid;
    adsSys500AFLangID: TSmallintField;
    cbLangID: TwwDBComboBox;
    qrySys910BS910B_005: TSmallintField;
    qrySys910BS910B_006: TIntegerField;
    qrySys910BS910B_007: TSmallintField;
    edtTime: TwwDBComboDlg;
    adsSys500AFType: TSmallintField;
    adsSys500AFTimeStr: TStringField;
    adsSys500AFTime: TIntegerField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbtnBackClick(Sender: TObject);
    procedure bbtnNextClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure dxDBGrid1DblClick(Sender: TObject);
    procedure lbFieldsDblClick(Sender: TObject);
    procedure mmiAllClick(Sender: TObject);
    procedure mmiNotSelClick(Sender: TObject);
    procedure dbgConditionsKeyPress(Sender: TObject; var Key: Char);
    procedure dbgConditionsMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure adsSys500AFAlterChange(Sender: TField);
    procedure adsSys500AFEMailChange(Sender: TField);
    procedure adsSys500AFSMSChange(Sender: TField);
    procedure edtTimeCustomDlg(Sender: TObject);
  private
    ATableName,AExpression,AMessage:string;
    AWeek:array[0..6] of string;
    AMonth:array[0..28] of string;
    AType:array[0..3] of string;
    procedure SetInterface;
    procedure ActivePage1;
    procedure ActivePage2;
    procedure ActivePage3;
    procedure ActivePage4;
    procedure ActivePage5;
    procedure SaveAlterData;
    procedure GetFields(ATable:String;ADataSet:TADODataSet);
    procedure SetFields(ATable:String);
    { Private declarations }
  public
    procedure OpenData(AlterNo:Integer);
    { Public declarations }
  end;

var
  Sys910_02Form: TSys910_02Form;

implementation

uses CommFun, SYSDATA, Sys910_01, Sys910_03;

{$R *.dfm}

procedure TSys910_02Form.OpenData(AlterNo:Integer);
var
  S,ASubStr:String;
  I,AStart,AEnd:Integer;
begin
  if AlterNo=0 then Exit;
  edtAlterName.Text:=Sys910_01Form.qrySys910A.FieldByName('S910A_002').Value;  //预警名称
  edtCond.Text:=Sys910_01Form.qrySys910A.FieldByName('S910A_003').Value;  //预警条件
  edtReceive.Text:=Sys910_01Form.qrySys910A.FieldByName('S910A_004').Value;  //接收人
  ATableName:=Sys910_01Form.qrySys910A.FieldByName('S910A_005').Value;  //表名
  SetFields(ATableName);
  S:='';
  for I:=1 to Length(ATableName) do
  begin
    if ATableName[I]<>',' then
      S:=S+ATableName[I]
    else
    begin
      adsTables.Locate('FCode',S,[]);
      adsTables.Edit;
      adsTables.FieldByName('FSelected').Value:=True;
      adsTables.Post;
      S:='';
    end;
  end;
  if S<>'' then
  begin
    adsTables.Locate('FCode',S,[]);
    adsTables.Edit;
    adsTables.FieldByName('FSelected').Value:=True;
    adsTables.Post;
  end;
  S:=Sys910_01Form.qrySys910A.FieldByName('S910A_007').Value;  //预警信息
  AStart:=0;
  AEnd:=0;
  AMessage:=S;
  for I:=1 to Length(S) do
  begin
    if (AStart=0) and (S[I]='[') then AStart:=I
    else if (AEnd=0) and (S[I]=']') then AEnd:=I;
    if (AStart<>0) and (AEnd<>0) then
    begin
      ASubStr:=Copy(S,AStart+1,AEnd-AStart-1);
      if adsFields.Locate('Field',ASubStr,[]) then
        ReplaceString(ASubStr,adsFields.FieldByName('FieldName').Value,AMessage);
      AStart:=0;
      AEnd:=0;
    end;
  end;
  edtShowMsg.Text:=AMessage;
  
  S:=Sys910_01Form.qrySys910A.FieldByName('S910A_008').Value;  //条件表达式
  AStart:=0;
  AEnd:=0;
  AExpression:=S;
  for I:=1 to Length(S) do
  begin
    if (AStart=0) and (S[I]='[') then AStart:=I
    else if (AEnd=0) and (S[I]=']') then AEnd:=I;
    if (AStart<>0) and (AEnd<>0) then
    begin
      ASubStr:=Copy(S,AStart+1,AEnd-AStart-1);
      if adsFields.Locate('Field',ASubStr,[]) then
        ReplaceString(ASubStr,adsFields.FieldByName('FieldName').Value,AExpression);
      AStart:=0;
      AEnd:=0;
    end;
  end;
  RichEdit1.Text:=AExpression;
end;

procedure TSys910_02Form.SetInterface;
begin
  Font.Name:=AFontName;
  Caption:=GetDBString('SYS91002001');  //预警设置向导
  bbtnBack.Caption:=GetDBString('SYS91002002');  //上一步(&B)
  bbtnNext.Caption:=GetDBString('SYS91002003');  //下一步(&N)
  bbtnExit.Caption:=GetDBString('SYS91002004');  //退出(&X)
  lblStartMsg1.Caption:=GetDBString('SYS91002006');  //预警设置向导会帮助您正确设置预警条件。
  lblStartMsg2.Caption:=GetDBString('SYS91002007');  //请输入预警名称,然后设置预警条件,预警信息接收人,以及预警消息的内容。
  lblStartMsg3.Caption:=GetDBString('SYS91002008');  //要继续,请单击“下一步”。

  lblAlterName.Caption:=GetDBString('SYS91002009');  //请输入预警名称。
  lblConditions.Caption:=GetDBString('SYS91002010');  //请选择要设置预警的表名。

//  lblField.Caption:=GetDBString('SYS91002011');  //字段名
//  lblOperators.Caption:=GetDBString('SYS91002012');  //比较符
//  lblFieldValue.Caption:=GetDBString('SYS91002013');  //字段值
//  sbAppend.Caption:=GetDBString('SYS91002014');  //增加
//  sbDel.Caption:=GetDBString('SYS91002015');  //删除
//  sbClear.Caption:=GetDBString('SYS91002016');  //清除
  lblExpression.Caption:=GetDBString('SYS91002011');  //设置预警条件的表达式:
  lblFunction.Caption:=GetDBString('SYS91002012');  //表达式
  lblFieldName.Caption:=GetDBString('SYS91002013');  //字段名

  lblReceive.Caption:=GetDBString('SYS91002017');  //接收人说明:
  lblUserList.Caption:=GetDBString('SYS91002018');  //用户列表:
  lblShowMsg.Caption:=GetDBString('SYS91002020');  //请设置预警信息显示的内容。
  adsFieldsField.DisplayLabel:=GetDBString('SYS91002021');  //字段
  adsFieldsFieldName.DisplayLabel:=GetDBString('SYS91002022');  //字段名称
  lblCond.Caption:=GetDBString('SYS91002023');  //预警条件说明:
  Label9.Caption:=GetDBString('SYS91002024');  //您已经成功的设置了下列预警信息:
  Label10.Caption:=GetDBString('SYS91002025');  //预警名称:
  Label11.Caption:=GetDBString('SYS91002026');  //预警条件:
  Label12.Caption:=GetDBString('SYS91002027');  //接收人:
  Label13.Caption:=GetDBString('SYS91002028');  //单击“完成”,将保存该预警信息设置。

  //所有表名
  adsTables.Close;
  adsTables.FieldDefs.Clear;
  adsTables.FieldDefs.Add('FSelected',ftBoolean,0);
  adsTables.FieldDefs.Add('FCode',ftString,50);
  adsTables.FieldDefs.Add('FName',ftString,50);
  adsTables.CreateDataSet;
  qryTables.Close;
  qryTables.SQL.Clear;
  qryTables.SQL.Add('select LangID,Name from '+ALangTable+' where Type=4');
  qryTables.Open;
  while not qryTables.Eof do
  begin
    adsTables.Append;
    adsTables.FieldByName('FSelected').Value:=False;
    adsTables.FieldByName('FCode').Value:=qryTables.FieldByName('LangID').Value;
    adsTables.FieldByName('FName').Value:=qryTables.FieldByName('Name').Value;
    adsTables.Post;
    qryTables.Next;
  end;

  AType[0]:='即时';
  AType[1]:='每天';
  AType[2]:='每周';
  AType[3]:='每月';

  AWeek[0]:='星期日';;
  AWeek[1]:='星期一';;
  AWeek[2]:='星期二';;
  AWeek[3]:='星期三';;
  AWeek[4]:='星期四';;
  AWeek[5]:='星期五';;
  AWeek[6]:='星期六';;
  AMonth[0]:='月末';
  AMonth[1]:='01日';
  AMonth[2]:='02日';
  AMonth[3]:='03日';
  AMonth[4]:='04日';
  AMonth[5]:='05日';
  AMonth[6]:='06日';
  AMonth[7]:='07日';
  AMonth[8]:='08日';
  AMonth[9]:='09日';
  AMonth[10]:='10日';
  AMonth[11]:='11日';
  AMonth[12]:='12日';
  AMonth[13]:='13日';
  AMonth[14]:='14日';
  AMonth[15]:='15日';
  AMonth[16]:='16日';
  AMonth[17]:='17日';
  AMonth[18]:='18日';
  AMonth[19]:='19日';
  AMonth[20]:='20日';
  AMonth[21]:='21日';
  AMonth[22]:='22日';
  AMonth[23]:='23日';
  AMonth[24]:='24日';
  AMonth[25]:='25日';
  AMonth[26]:='26日';
  AMonth[27]:='27日';
  AMonth[28]:='28日';
end;

procedure TSys910_02Form.FormCreate(Sender: TObject);
begin
  SetInterface;
  PageControl1.ActivePageIndex:=0;

  qrySys910B.Close;
  qrySys910B.SQL.Clear;
  qrySys910B.SQL.Add('select * from SYS910B where S910B_001='+IntToStr(AAlterNo));
  qrySys910B.Open;
  //插入所有用户
  adsSys500A.Close;
  adsSys500A.CreateDataSet;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select * from SYS500A');
  SYSDM.qryQuery.Open;
  while not SYSDM.qryQuery.Eof do
  begin
    adsSys500A.Append;
    adsSys500A.FieldByName('FUserNo').Value:=SYSDM.qryQuery.FieldByName('S500A_001').Value;
    adsSys500A.FieldByName('FUserName').Value:=SYSDM.qryQuery.FieldByName('S500A_002').Value;
    if qrySys910B.Locate('S910B_002',SYSDM.qryQuery.FieldByName('S500A_001').Value,[]) then
    begin
      adsSys500A.FieldByName('FAlter').Value:=True;
      adsSys500A.FieldByName('FEMail').Value:=qrySys910B.FieldByName('S910B_003').AsBoolean;
      adsSys500A.FieldByName('FSMS').Value:=qrySys910B.FieldByName('S910B_004').AsBoolean;
      adsSys500A.FieldByName('FType').Value:=qrySys910B.FieldByName('S910B_005').AsInteger;
      case qrySys910B.FieldByName('S910B_005').AsInteger of
        0:adsSys500A.FieldByName('FTime').Value:=0;
        1:adsSys500A.FieldByName('FTime').Value:=qrySys910B.FieldByName('S910B_006').AsInteger;
        2:adsSys500A.FieldByName('FTime').Value:=qrySys910B.FieldByName('S910B_006').AsInteger;
        3:adsSys500A.FieldByName('FTime').Value:=qrySys910B.FieldByName('S910B_006').AsInteger;
      end;
      case qrySys910B.FieldByName('S910B_005').AsInteger of
        0:adsSys500A.FieldByName('FTimeStr').Value:=AType[0];
        1:adsSys500A.FieldByName('FTimeStr').Value:=AType[1]+', '+TimeToString(qrySys910B.FieldByName('S910B_006').AsInteger);
        2:adsSys500A.FieldByName('FTimeStr').Value:=AType[2]+', '+AWeek[qrySys910B.FieldByName('S910B_006').AsInteger];
        3:adsSys500A.FieldByName('FTimeStr').Value:=AType[3]+', '+AMonth[qrySys910B.FieldByName('S910B_006').AsInteger];
      end;
      adsSys500A.FieldByName('FLangID').Value:=qrySys910B.FieldByName('S910B_007').AsInteger;
    end else
    begin
      adsSys500A.FieldByName('FAlter').Value:=False;
      adsSys500A.FieldByName('FEMail').Value:=False;
      adsSys500A.FieldByName('FSMS').Value:=False;
      adsSys500A.FieldByName('FType').Value:=0;
      adsSys500A.FieldByName('FTime').Value:=0;
      adsSys500A.FieldByName('FTimeStr').Value:=AType[0];
      adsSys500A.FieldByName('FLangID').Value:=1;
    end;
    adsSys500A.Post;
    SYSDM.qryQuery.Next;
  end;
end;

procedure TSys910_02Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  qrySys910B.Close;
  adsTables.Close;
end;

procedure TSys910_02Form.bbtnBackClick(Sender: TObject);
begin
//上一步(&B)
  PageControl1.ActivePageIndex:=PageControl1.ActivePageIndex-1;
  bbtnBack.Enabled:=PageControl1.ActivePageIndex<>0;
  if PageControl1.ActivePageIndex=6 then
    bbtnNext.Caption:=GetDBString('SYS91002005')  //完成
  else
    bbtnNext.Caption:=GetDBString('SYS91002003');  //下一步(&N)
end;

//设置预警名称
procedure TSys910_02Form.ActivePage1;
begin
  if trim(edtAlterName.Text)='' then
  begin
    ShowMsg('UMS10000142');  //预警名称不能为空,请重新输入
    edtAlterName.SetFocus;
    Abort;

⌨️ 快捷键说明

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