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

📄 tscmain.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
    GetAlterScript(AlterNo,ATable);
    TSCDM.qrySys910A.Next;
  end;
  TSCDM.qrySys910A.Close;
end;

//显示在线用户信息
procedure TTscMainForm.GetOnlineUser(AAcctName:string);
var
  AUser:string;
begin
//在事件触发的时候显示在线用户信息,其实都只要在
  adsSys500E.DisableControls;
  qrySys500E.Close;
  qrySys500E.SQL.Clear;
  qrySys500E.SQL.Add('select A.*,B.S500A_002 from SYS500E A, SYS500A B where S500E_001=S500A_001');
  qrySys500E.Open;
  while not qrySys500E.Eof do
  begin
    AUser:=qrySys500E.FieldByName('S500A_002').AsString;
    if adsSys500E.Locate('FDatabase;FUser',VarArrayOf([AAcctName,AUser]),[]) then
      adsSys500E.Edit
    else
      adsSys500E.Append;
    adsSys500E.FieldByName('FDatabase').Value:=AAcctName;
    adsSys500E.FieldByName('FUser').Value:=AUser;
    adsSys500E.FieldByName('FLogin').Value:=qrySys500E.FieldByName('S500E_002').Value;
    adsSys500E.FieldByName('FLast').Value:=qrySys500E.FieldByName('S500E_003').Value;
    adsSys500E.FieldByName('FIP').Value:=qrySys500E.FieldByName('S500E_004').Value;
    adsSys500E.FieldByName('FComputer').Value:=qrySys500E.FieldByName('S500E_005').Value;
    case qrySys500E.FieldByName('S500E_006').AsInteger of
      0:adsSys500E.FieldByName('FStatus').Value:='OnLine';
      1:adsSys500E.FieldByName('FStatus').Value:='OffLine';
    end;
    adsSys500E.FieldByName('FUserNo').Value:=qrySys500E.FieldByName('S500E_001').Value;
    adsSys500E.Post;
    qrySys500E.Next;
  end;
  adsSys500E.EnableControls;
  qrySys500E.Close;  
end;

procedure TTscMainForm.Timer1Timer(Sender: TObject);
var
  AFileName,ADBUser,ADBPass,AServer:String;
  ADatabase:Integer;
  AStringList:TStringList;
  ADate:TDateTime;
begin
  if AIsBusy then Exit;
  AIsBusy:=True;
  AStringList:=TStringList.Create;
  TSCDM.qryDatabase.Close;
  TSCDM.qryDatabase.Open;
  while not TSCDM.qryDatabase.Eof do
  begin
    Application.ProcessMessages;
    try
      AFileName:=TSCDM.qryDatabase.FieldByName('FPath').AsString;
      ADBUser:=TSCDM.qryDatabase.FieldByName('FUser').AsString;
      ADBPass:=TSCDM.qryDatabase.FieldByName('FPass').AsString;
      AServer:=TSCDM.qryDatabase.FieldByName('FHost').AsString;
      ADatabase:=TSCDM.qryDatabase.FieldByName('FType').AsInteger;
      case ADatabase of
        0:ConnectDB(TSCDM.ADOC,ADatabase,AServer,AFileName,ADBUser,ADBPass);
        1:ConnectDB(TSCDM.ADOC,ADatabase,AServer,AFileName,ADBUser,ADBPass);
      end;

      //在线用户无活动时间超过180秒时,则自动删除
      ADate:=GetServerDate;
      TSCDM.qryQuery.Close;
      TSCDM.qryQuery.SQL.Clear;
      TSCDM.qryQuery.SQL.Add('select * from SYS500E');
      TSCDM.qryQuery.Open;
      while not TSCDM.qryQuery.Eof do
      begin
        if ADate-TSCDM.qryQuery.FieldByName('S500E_003').Value>=AOnline/(60*60*24) then
          TSCDM.qryQuery.Delete
        else
          TSCDM.qryQuery.Next;
      end;
      //显示在线用户信息
      GetOnlineUser(TSCDM.qryDatabase.FieldByName('FName').AsString);

      SetAlterInfo;           //预警消息插入
//      SendMail(AStringList);  //邮件发送

    except
      Continue;
    end;

    TSCDM.qryDatabase.Next;
  end;
  TSCDM.qryDatabase.Close;
  TSCDM.qryQuery.Close;
  AIsBusy:=False;
  AStringList.Free;
end;

procedure TTscMainForm.SendMail(AStringList:TStringList);
var
  ASubJect,AToEMail,AToMobile,ALine,ATitle,ARemark:String;
  ALangNo,AAlterNo:Integer;
begin
  AAlterNo:=0;
  ALangNo:=0;
  //邮件发送
  //取得所有需要发送邮件,但尚未发送邮件的预警信息
  //预警名称,预警时间,信息内容,邮箱地址,短信号码
  qrySys910.Close;
  qrySys910.SQL.Clear;
  case ADatabase of
    0:qrySys910.SQL.Add('select * from SYS910 where S910_007<>0 and S910_008=0 and S910_011<=now() order by S910_001,S910_005');
    1:qrySys910.SQL.Add('select * from SYS910 where S910_007<>0 and S910_008=0 and S910_011<=getdate() order by S910_001,S910_005');
  end;
  try
    qrySys910.Open
  except
    Exit
  end;
  AStringList.Clear;
  ALine:='===================  ===================================================================';
  ATitle:='预警时间             预警内容';
  ARemark:='注:该邮件由宝丽玛信息系统自动发送,如有问题请直接回复';
  while not qrySys910.Eof do
  begin
    Application.ProcessMessages;
    qrySys910.Edit;
    qrySys910.FieldByName('S910_008').Value:=True;  //已发送邮件
    qrySys910.Post;
    //合并邮件(相同的预警名称、相同的接收人员)
    if (AAlterNo<>qrySys910.FieldByName('S910_001').AsInteger) or (AToEMail<>qrySys910.FieldByName('S500A_007').AsString) then
    begin
      if AStringList.Count<>0 then
      begin
        AStringList.Add(ALine);
        AStringList.Add(ARemark);
        case ALangNo of
          0:AStringList.Text:=AStringList.Text;  //简体
          1:AStringList.Text:=GB2Big5(AStringList.Text);  //繁体
          2:AStringList.Text:=GB2Big5(AStringList.Text);  //英文
        end;
        case ALangNo of
          0:ASubJect:=ASubJect;  //简体
          1:ASubJect:=GB2Big5(ASubJect);  //繁体
          2:ASubJect:=GB2Big5(ASubJect);  //英文
        end;
        //设置已发送邮件标志
        SendEMail(AStringList,AToEMail,'','',ASubJect,False,nil);
      end;
      ASubJect:=qrySys910.FieldByName('S910A_002').AsString;  //预警名称
      AAlterNo:=qrySys910.FieldByName('S910_001').AsInteger;  //预警号
      AToEMail:=qrySys910.FieldByName('S500A_007').AsString;  //邮箱地址
      AToMobile:=qrySys910.FieldByName('S500A_008').AsString; //短信号码
      ALangNo:=qrySys910.FieldByName('S910_012').AsInteger;   //语种类别
      AStringList.Clear;
      AStringList.Add(ALine);
      AStringList.Add(ATitle);
      AStringList.Add(ALine);
    end;
    AStringList.Add(qrySys910.FieldByName('S910_002').AsString+'  '+qrySys910.FieldByName('S910_003').AsString);  //预警时间  信息内容
    qrySys910.Next;
  end;
  qrySys910.Close;  
end;

procedure TTscMainForm.FormCreate(Sender: TObject);
begin
  ATrayIcon:=THwTrayIcon.Create(Self);
  ImageList1.GetIcon(0,ATrayIcon.Icon);
  ATrayIcon.IconVisible:=True;
  ATrayIcon.Hint:=GetDBString('COM00005020');  //浩晖预警服务器
  ATrayIcon.MinimizeToTray:=True;
  ATrayIcon.PopupMenu:=PopupMenu1;
  ATrayIcon.OnDblClick:=ATrayIconDbClick;
  Application.OnMinimize:=ActShowMainExecute;
  if not FileExists('.\HwTSC.ini') then
  begin
    WriteIniFile('.\HwTSC.ini','ALTER','TIME',2,5);  //预警信息的发送间隔时间5秒
    WriteIniFile('.\HwTSC.ini','ALTER','ONLINE',2,180);  //在线用户无活动时间超过180秒时,则自动删除
    WriteIniFile('.\HwTSC.ini','EMAIL','ADDRESS',1,'jacky@polymide.com.cn');  //邮件地址
    WriteIniFile('.\HwTSC.ini','EMAIL','SMTP',1,'mail.polymide.com.cn');  //发送服务器
    WriteIniFile('.\HwTSC.ini','EMAIL','PORT',2,25);  //发送服务器端口
    WriteIniFile('.\HwTSC.ini','EMAIL','USER',1,'jacky@polymide.com.cn');  //帐号
    WriteIniFile('.\HwTSC.ini','EMAIL','PASS',1,'admin0507');  //密码
  end;
  AAlterTime:=ReadIniFile('.\HwTSC.ini','ALTER','TIME',2);  //预警信息的发送间隔时间5秒
  AOnLine:=ReadIniFile('.\HwTSC.ini','ALTER','ONLINE',2);  //在线用户无活动时间超过180秒时,则自动删除
  AFromEMail:=ReadIniFile('.\HwTSC.ini','EMAIL','ADDRESS',1);  //邮件地址
  ASmtpHost:=ReadIniFile('.\HwTSC.ini','EMAIL','SMTP',1);  //发送服务器
  ASmtpPort:=ReadIniFile('.\HwTSC.ini','EMAIL','PORT',2);  //发送服务器端口
  ASmtpUser:=ReadIniFile('.\HwTSC.ini','EMAIL','USER',1);  //帐号
  ASmtpPass:=ReadIniFile('.\HwTSC.ini','EMAIL','PASS',1);  //密码
  Timer1.Enabled:=False;
  Timer1.Interval:=AAlterTime*1000;
  Timer1.Enabled:=True;
  ActStart.Enabled:=not Timer1.Enabled;
  ActStop.Enabled:=Timer1.Enabled;
  adsSys500E.Close;
  adsSys500E.CreateDataSet;
  Timer1Timer(Timer1);
end;

procedure TTscMainForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //退出浩晖事务服务控制器后,将不能接收到任何预警消息,您确定要退出吗?
  if ShowDialog('UMS10000140')=IDNO then Abort;
  TSCDM.qryDatabase.Close;
  TSCDM.qryQuery.Close;
  TSCDM.qrySys910.Close;
  TSCDM.qrySys910A.Close;
  TSCDM.qrySys910B.Close;
  ATrayIcon.Destroy;
end;

procedure TTscMainForm.ActShowMainExecute(Sender: TObject);
begin
//显示/隐藏主界面(&S)
  Application.ShowMainForm:=not Application.ShowMainForm;
  if Application.ShowMainForm then
  begin
    ATrayIcon.ShowMainForm
  end else
  begin
    ATrayIcon.HideMainForm;
  end;  
end;

procedure TTscMainForm.ActExitExecute(Sender: TObject);
begin
//退出(&X)
  Close;
end;

procedure TTscMainForm.ActStartExecute(Sender: TObject);
begin
//启动预警服务(&T)
  Timer1.Enabled:=True;
  ActStart.Enabled:=not Timer1.Enabled;
  ActStop.Enabled:=Timer1.Enabled;
end;

procedure TTscMainForm.ActStopExecute(Sender: TObject);
begin
//停止预警服务(&P)
  //停止预警服务后,将不能接收到任何预警消息,您确定要停止预警服务?
  if ShowDialog('UMS10000141')=IDYES then
  begin
    Timer1.Enabled:=False;
    ActStart.Enabled:=not Timer1.Enabled;
    ActStop.Enabled:=Timer1.Enabled;
  end;
end;

procedure TTscMainForm.ActHelpExecute(Sender: TObject);
begin
//帮助
end;

procedure TTscMainForm.ActAboutExecute(Sender: TObject);
begin
//关于
end;

procedure TTscMainForm.ActSetupExecute(Sender: TObject);
begin
//设置
  TscParForm:=TTscParForm.Create(Application);
  if TscParForm.ShowModal=1 then
  begin
    AAlterTime:=ReadIniFile('.\HwTSC.ini','ALTER','TIME',2);  //预警信息的发送间隔时间5秒
    Timer1.Enabled:=False;
    Timer1.Interval:=AAlterTime*1000;
    Timer1.Enabled:=True;
  end;
end;

procedure TTscMainForm.ActRefreshExecute(Sender: TObject);
begin
//刷新
  Timer1Timer(Timer1);
end;

procedure TTscMainForm.ActLogoutExecute(Sender: TObject);
begin
//注销
  if qrySys500E.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;

  if ShowDialog('UMS10000008')=IDYES then  //确定要删除此记录吗?
  begin
    qrySys500E.Delete;
  end;
end;

procedure TTscMainForm.qrySys500ES500E_006GetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  if qrySys500E.IsEmpty then Exit;
  case Sender.AsInteger of
    0:Text:='Online';  //活动
    1:Text:='Offline';  //不活动
  end;
end;

procedure TTscMainForm.dbgSys500EBackgroundDrawEvent(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect);
var
  AText:string;
begin
  inherited;
  ARect.Left:=0;
  ARect.Top:=0;
  ACanvas.Brush.Color:=dbgSys500E.GroupPanelColor;
  ACanvas.Font.Color:=dbgSys500E.GroupPanelFontColor;
  //您可以把列标题拖放到此处使记录按此列进行分组
  if dbgSys500E.GroupColumnCount=0 then AText:=' '+GetDBString('NOT10001012') else AText:='';
  Windows.FillRect(ACanvas.Handle, ARect, 0);
  DrawText(ACanvas.Handle, PChar(AText), Length(AText), ARect, DT_LEFT or DT_EXPANDTABS or DT_NOPREFIX or DT_SINGLELINE or DT_VCENTER);
end;

procedure TTscMainForm.ATrayIconDbClick(Sender: TObject);
begin
  ATrayIcon.ShowMainForm;
  Application.ShowMainForm:=True;
end;

end.

⌨️ 快捷键说明

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