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

📄 tscmain.pas.svn-base

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Menus, ActnList, ADODB, ComCtrls, ToolWin, HwTrayIcon,
  dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, DB, IdMessage, IdSMTP,
  IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, DateUtils,
  IdBaseComponent, ImgList, dxDBTLCl, dxGrClms, StdCtrls;

type
  TTscMainForm = class(TForm)
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    ActionList1: TActionList;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    miFile: TMenuItem;
    miUser: TMenuItem;
    miHelp: TMenuItem;
    miSet: TMenuItem;
    N2: TMenuItem;
    X1: TMenuItem;
    ActSetup: TAction;
    ActExit: TAction;
    ActShowMain: TAction;
    ActStart: TAction;
    ActStop: TAction;
    T1: TMenuItem;
    P1: TMenuItem;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    dbgSys500E: TdxDBGrid;
    dsSys500E: TDataSource;
    qrySys500E: TADOQuery;
    IdMsgSend: TIdMessage;
    SMTP: TIdSMTP;
    ImageList1: TImageList;
    ActHelp: TAction;
    ActAbout: TAction;
    ActRefresh: TAction;
    ActLogout: TAction;
    N3: TMenuItem;
    A1: TMenuItem;
    N4: TMenuItem;
    ActRefresh1: TMenuItem;
    O1: TMenuItem;
    O2: TMenuItem;
    T2: TMenuItem;
    P2: TMenuItem;
    N5: TMenuItem;
    X2: TMenuItem;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    qrySys500ES500E_001: TIntegerField;
    qrySys500ES500E_002: TDateTimeField;
    qrySys500ES500E_003: TDateTimeField;
    qrySys500ES500E_004: TWideStringField;
    qrySys500ES500E_005: TWideStringField;
    qrySys500ES500E_006: TSmallintField;
    qrySys500ES500A_002: TWideStringField;
    adsSys500E: TADODataSet;
    adsSys500EFDatabase: TStringField;
    adsSys500EFUser: TStringField;
    adsSys500EFLogin: TDateTimeField;
    adsSys500EFLast: TDateTimeField;
    adsSys500EFIP: TStringField;
    adsSys500EFComputer: TStringField;
    adsSys500EFStatus: TStringField;
    adsSys500EFUserNo: TIntegerField;
    dbgSys500EFDatabase: TdxDBGridMaskColumn;
    dbgSys500EFUser: TdxDBGridMaskColumn;
    dbgSys500EFLogin: TdxDBGridDateColumn;
    dbgSys500EFLast: TdxDBGridDateColumn;
    dbgSys500EFIP: TdxDBGridMaskColumn;
    dbgSys500EFComputer: TdxDBGridMaskColumn;
    dbgSys500EFStatus: TdxDBGridMaskColumn;
    qrySys910: TADOQuery;
    qrySys500A: TADOQuery;
    qrySys910A: TADOQuery;
    qrySys910S910_001: TIntegerField;
    qrySys910S910_002: TDateTimeField;
    qrySys910S910_003: TWideStringField;
    qrySys910S910_004: TWideStringField;
    qrySys910S910_005: TIntegerField;
    qrySys910S910_006: TSmallintField;
    qrySys910S910_007: TBooleanField;
    qrySys910S910_008: TBooleanField;
    qrySys910S910_009: TBooleanField;
    qrySys910S910_010: TBooleanField;
    qrySys910S910A_002: TStringField;
    qrySys910S500A_007: TStringField;
    qrySys910S500A_008: TStringField;
    qrySys910S910_011: TDateTimeField;
    qrySys910S910_012: TSmallintField;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ActShowMainExecute(Sender: TObject);
    procedure ActExitExecute(Sender: TObject);
    procedure ActStartExecute(Sender: TObject);
    procedure ActStopExecute(Sender: TObject);
    procedure ActHelpExecute(Sender: TObject);
    procedure ActAboutExecute(Sender: TObject);
    procedure ActSetupExecute(Sender: TObject);
    procedure ActRefreshExecute(Sender: TObject);
    procedure ActLogoutExecute(Sender: TObject);
    procedure qrySys500ES500E_006GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure dbgSys500EBackgroundDrawEvent(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect);
    procedure ATrayIconDbClick(Sender: TObject);
  private
    AFromEMail:string;   //email address
    ASmtpHost:string;    //smtp host
    ASmtpPort:integer;   //smtp port
    ASmtpUser:string;    //smtp user
    ASmtpPass:string;    //smtp password
    AAlterTime:Integer;  //预警信息的发送间隔时间5秒
    AOnline:Integer;     //在线用户无活动时间超过180秒时,则自动删除
    ATrayIcon:THwTrayIcon;
    AIsBusy:Boolean;
    procedure SendEMail(ABody:TStrings;AToEMail,ACCEMail,ABCCEMail,ASubJect:string;AReturnReciept:Boolean;AFileName:TStringList);
    procedure GetOnlineUser(AAcctName:string);
    procedure SendMail(AStringList:TStringList);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TscMainForm: TTscMainForm;

implementation

uses TSCDATA, AlterComm, TscPar;

{$R *.dfm}

//发送邮件
procedure TTscMainForm.SendEMail(ABody:TStrings;AToEMail,ACCEMail,ABCCEMail,ASubJect:string;AReturnReciept:Boolean;AFileName:TStringList);
var
  I:Integer;
begin
  with IdMsgSend do
  begin
    Body.Assign(ABody);
    From.Text:=AFromEMail;
    Recipients.EMailAddresses:=AToEMail;
    Subject:=ASubJect;
    Priority:=mpNormal;  //Highest,High,Normal,Low,Lowest
    CCList.EMailAddresses:=ACCEMail;
    BccList.EMailAddresses:=ABCCEMail;
    //是否回复已读回执
    if AReturnReciept then ReceiptRecipient.Text:=AFromEMail else ReceiptRecipient.Text:='';
    //附件
    if AFileName<>nil then
    begin
      for I:=0 to AFileName.Count do
      begin
        TIdAttachment.Create(MessageParts,AFileName[I]);
      end;
    end;
  end;

  try
    SMTP.AuthenticationType:=atLogin;
    SMTP.Host:=ASmtpHost;
    SMTP.Port:=ASmtpPort;
    SMTP.UserID:=ASmtpUser;
    SMTP.Password:=ASmtpPass;
    try
      SMTP.Connect;
      SMTP.Send(IdMsgSend);
      qrySys910.UpdateBatch;
    except
      qrySys910.CancelBatch;
      Abort;
    end;
  finally
    SMTP.Disconnect;
  end;
end;

function GetInfo(AlterName,AlterInfo:string):String;
var
  S,AFieldName,ASubStr,AField:String;
  I,AStart,AEnd:Integer;
begin
  Result:=AlterName;
  AStart:=0;
  AEnd:=0;
  S:=AlterInfo;
  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
      AFieldName:=Copy(S,AStart+1,AEnd-AStart-1);
      AField:=AFieldName;
      Delete(AField,1,Pos('.',AField));
      ASubStr:=TSCDM.qryQuery.FieldByName(AField).AsString;
      ReplaceString(AFieldName,ASubStr,AlterInfo);
      AStart:=0;
      AEnd:=0;
    end;
  end;
  Result:=Result+': '+AlterInfo;
end;

//取得发送的时间
function GetSendTime(AType,ATime:Integer):TDateTime;
var
  ADate:TDateTime;
  AYear,AMonth,ADay,AHour,AMine:Word;
begin
  ADate:=GetServerDate;
  AHour:=0;
  AMine:=0;
  if AType=1 then
  begin
    DecodeDate(ADate,AYear,AMonth,ADay);
    AHour:=ATime div 60;
    AMine:=ATime-AHour*60;
  end;
  if AType=3 then
  begin
    if AMonth=12 then
    begin
      AYear:=AYear+1;
      AMonth:=1;
    end else
      AMonth:=AMonth+1;
    if ATime=0 then
    begin
      ADay:=1;
      DecodeDate(ADate,AYear,AMonth,ADay);
      ADate:=GetMonthEndDate(ADate);
    end else
    begin
      ADay:=ATime;
      DecodeDate(ADate,AYear,AMonth,ADay);
    end;
  end;
  case AType of  //0=即时,1=每天,2=每周,3=每月
    0:ADate:=ADate;
    1:ADate:=EncodeDateTime(AYear,AMonth,ADay,AHour,AMine,0,0);
    2:ADate:=ADate+7-DayOfWeek(ADate)+ATime+1;
    3:ADate:=ADate;
  end;
  Result:=ADate;
end;

procedure InsertAlterInfo(ASQL:String);
var
  S:String;
begin
  TSCDM.qryQuery.Close;
  TSCDM.qryQuery.SQL.Clear;
  TSCDM.qryQuery.SQL.Add(ASQL);
  TSCDM.qryQuery.Open;
  while not TSCDM.qryQuery.Eof do
  begin
    S:=GetInfo(TSCDM.qrySys910A.FieldByName('S910A_002').Value,TSCDM.qrySys910A.FieldByName('S910A_007').Value);  //内容
    TSCDM.qrySys910.Close;
    TSCDM.qrySys910.SQL.Clear;
    TSCDM.qrySys910.SQL.Add('select * from SYS910 where S910_003='+''''+S+'''');
    TSCDM.qrySys910.Open;
    if TSCDM.qrySys910.IsEmpty then
    begin
      TSCDM.qrySys910B.Close;
      TSCDM.qrySys910B.SQL.Clear;
      TSCDM.qrySys910B.SQL.Add('select * from SYS910B where S910B_001='+TSCDM.qrySys910A.FieldByName('S910A_001').AsString);
      TSCDM.qrySys910B.Open;
      while not TSCDM.qrySys910B.Eof do
      begin
        TSCDM.qrySys910.Insert;
        TSCDM.qrySys910.FieldByName('S910_001').Value:=TSCDM.qrySys910A.FieldByName('S910A_001').Value;   //预警編號
        TSCDM.qrySys910.FieldByName('S910_002').Value:=Now;   //预警时间
        TSCDM.qrySys910.FieldByName('S910_003').Value:=S;  //内容
        TSCDM.qrySys910.FieldByName('S910_004').Value:=TSCDM.qrySys910A.FieldByName('S910A_006').Value;  //程序编号
        TSCDM.qrySys910.FieldByName('S910_005').Value:=TSCDM.qrySys910B.FieldByName('S910B_002').Value;  //接收人
        TSCDM.qrySys910.FieldByName('S910_006').Value:=1;  //状态 1=新消息,2=旧消息
        TSCDM.qrySys910.FieldByName('S910_007').Value:=TSCDM.qrySys910B.FieldByName('S910B_003').Value;  //发邮件否
        TSCDM.qrySys910.FieldByName('S910_008').Value:=False;  //已发邮件
        TSCDM.qrySys910.FieldByName('S910_009').Value:=TSCDM.qrySys910B.FieldByName('S910B_004').Value;  //发短信否
        TSCDM.qrySys910.FieldByName('S910_010').Value:=False;  //已发短信
        TSCDM.qrySys910.FieldByName('S910_011').Value:=GetSendTime(TSCDM.qrySys910B.FieldByName('S910B_005').Value,TSCDM.qrySys910B.FieldByName('S910B_006').Value);  //发送时间
        TSCDM.qrySys910.FieldByName('S910_012').Value:=TSCDM.qrySys910B.FieldByName('S910B_007').Value;  //语种类别
        TSCDM.qrySys910.Post;
        TSCDM.qrySys910B.Next;
      end;
    end;
    TSCDM.qryQuery.Next;
  end;
  TSCDM.qryQuery.Close;
  TSCDM.qrySys910.Close;
  TSCDM.qrySys910B.Close;
end;

procedure GetAlterScript(AlterNo:Integer;ATableName:string);
var
  S:String;
begin
  if TSCDM.qrySys910A.Active then
  TSCDM.qrySys910A.Locate('S910A_001',AlterNo,[]);
  S:='select * from '+ATableName+' where '+TSCDM.qrySys910A.FieldByName('S910A_008').Value;
  InsertAlterInfo(S);
end;

procedure SetAlterInfo;
var
  AlterNo:Integer;
  ATable:String;
begin
  try
    TSCDM.qrySys910A.Close;
    TSCDM.qrySys910A.Open;
  except
    Abort;
  end;
  while not TSCDM.qrySys910A.Eof do
  begin
    AlterNo:=TSCDM.qrySys910A.FieldByName('S910A_001').Value;
    ATable:=TSCDM.qrySys910A.FieldByName('S910A_005').Value;

⌨️ 快捷键说明

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