📄 sys910_02.pas.svn-base
字号:
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 + -