📄 frmreceive.pas
字号:
unit FrmReceive;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, Menus,
DBGrids, DB, ADODB;
type
TFrmReceive1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label3: TLabel;
Edit4: TEdit;
Label4: TLabel;
Edit5: TEdit;
Label5: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Label6: TLabel;
edit8: TComboBox;
Label7: TLabel;
Edit9: TEdit;
Label8: TLabel;
Label9: TLabel;
ComboBox1: TComboBox;
Label10: TLabel;
SpeedButton1: TSpeedButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ComboBox2: TComboBox;
Label11: TLabel;
DBGrid1: TDBGrid;
procedure EditKeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
procedure ComboBox2Select(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
private
{ Private declarations }
FNowSql,FNowSql1:string;
procedure QueryReceive;
function GetTotalMailCount:string;
function GetTotalMailSize:string;
function GetInfo:string;
public
{ Public declarations }
procedure IniShow;
end;
var
FrmReceive1: TFrmReceive1;
implementation
uses UnitDataModule, FrmAnalyze, UnitConst, FrmStatistics;
{$R *.dfm}
procedure TFrmReceive1.IniShow;
begin
C_SetCombox(UnitDataModule1.GetDomain,ComboBox1);
ComboBox1.Text:='';
end;
//查询--------------------------------------------------------------------------
procedure TFrmReceive1.QueryReceive;
var
TopStr,
DomainStr,
MailStatusStr,
MinSizeStr,
MaxSizeStr,
MinDateStr,
MaxDateStr,
MailFromStr,
SubjectStr,
UserIDStr:string;
MySql:string;
MyTag:integer;
begin
MyTag:=0;
if edit1.Text<>'' then
begin
MyTag:=1;
UserIDStr:=' where USERID in'+'(select USERID from USERINFO_VIEW where USERIDNAME='''+edit1.Text+''')';
end;
if ComboBox1.Text<>'' then
begin
if MyTag=0 then
begin
DomainStr:=' where USERID in'+'(select USERID from USERINFO_VIEW where DOMAINNAME='''+ComboBox1.Text+''')';
end
else begin
DomainStr:=' and USERID in'+'(select USERID from USERINFO_VIEW where DOMAINNAME='''+ComboBox1.Text+''')';
end;
MyTag:=1;
end;
if edit2.Text<>'' then
begin
if MyTag=0 then
begin
MinDateStr:=' where MAILDATE>='+''''+edit2.Text+'''';
end
else begin
MinDateStr:=' and MAILDATE>='+''''+edit2.Text+'''';
end;
MyTag:=1;
end;
if edit3.Text<>'' then
begin
if MyTag=0 then
begin
MaxDateStr:=' where MAILDATE<='+edit3.Text;
end
else begin
MaxDateStr:=' and MAILDATE<='+edit3.Text;
end;
MyTag:=1;
end;
if edit4.Text<>'' then
begin
if ComboBox2.ItemIndex=0 then
begin
if MyTag=0 then
begin
MailFromStr:=' where MAILFROM='+''''+edit4.Text+'''';
end
else begin
MailFromStr:=' and MAILFROM='+''''+edit4.Text+'''';
end;
end
else begin
if MyTag=0 then
begin
MailFromStr:=' where RCPTTO='+''''+edit4.Text+'''';
end
else begin
MailFromStr:=' and RCPTTO='+''''+edit4.Text+'''';
end;
end;
MyTag:=1;
end;
if edit5.Text<>'' then
begin
if MyTag=0 then
begin
SubjectStr:=' where SUBJECT like'+'''%'+edit5.Text+'%''';
end
else begin
SubjectStr:=' and SUBJECT like'+'''%'+edit5.Text+'%''';
end;
MyTag:=1;
end;
if edit6.Text<>'' then
begin
if MyTag=0 then
begin
MinSizeStr:=' where MAILSIZE>'+edit6.Text;
end
else begin
MinSizeStr:=' and MAILSIZE>'+edit6.Text;
end;
MyTag:=1;
end;
if edit7.Text<>'' then
begin
if MyTag=0 then
begin
MaxSizeStr:=' where MAILSIZE<'+edit7.Text;
end
else begin
MaxSizeStr:=' and MAILSIZE<'+edit7.Text;
end;
MyTag:=1;
end;
if edit8.Text<>'' then
begin
if MyTag=0 then
begin
MailStatusStr:=' where MAILBOX='+inttostr(edit8.ItemIndex+1);
end
else begin
MailStatusStr:=' and MAILBOX='+inttostr(edit8.ItemIndex+1);
end;
end;
if edit9.Text<>'' then
TopStr:=' top '+edit9.Text+' ';
///////////////////
MySql:='select'+TopStr;
FNowSql:='select'+TopStr;
FNowSql1:='select'+TopStr;
if ComboBox2.ItemIndex=0 then
begin
FNowSql:=FNowSql+' count(*) from RECEIVEMAILPROPERTY ';
FNowSql1:=FNowSql1+' sum(MAILSIZE) from RECEIVEMAILPROPERTY ';
MySql:=MySql+' MAILID,USERID,MAILFROM,SUBJECT,MAILDATE,MAILSIZE,MAILBOX from RECEIVEMAILPROPERTY ';
end
else begin
FNowSql:=FNowSql+' count(*) from REPLYMAILPROPERTY ';
FNowSql1:=FNowSql1+' sum(MAILSIZE) from REPLYMAILPROPERTY ';
MySql:=MySql+' MAILID,USERID,RCPTTO,SUBJECT,MAILDATE,MAILSIZE,MAILBOX from REPLYMAILPROPERTY ';
end;
MySql:=MySql+
UserIDStr+
DomainStr+
MinDateStr+
MaxDateStr+
MailFromStr+
SubjectStr+
MinSizeStr+
MaxSizeStr+
MailStatusStr;
FNowSql:=FNowSql+
UserIDStr+
DomainStr+
MinDateStr+
MaxDateStr+
MailFromStr+
SubjectStr+
MinSizeStr+
MaxSizeStr+
MailStatusStr;
FNowSql1:=FNowSql1+
UserIDStr+
DomainStr+
MinDateStr+
MaxDateStr+
MailFromStr+
SubjectStr+
MinSizeStr+
MaxSizeStr+
MailStatusStr;
UnitDataModule1.ShowReceiveList(MySql);
end;
//------------------------------------------------------------------------------
procedure TFrmReceive1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
SpeedButton1Click(self);
end;
procedure TFrmReceive1.SpeedButton1Click(Sender: TObject);
begin
QueryReceive;
end;
function TFrmReceive1.GetTotalMailCount:string;
begin
result:=UnitDataModule1.GetMCountOrSize(FNowSql);
end;
function TFrmReceive1.GetTotalMailSize:string;
begin
result:=UnitDataModule1.GetMCountOrSize(FNowSql)+' byte';
end;
function TFrmReceive1.GetInfo:string;
var
MyList:TStringList;
begin
MyList:=TStringList.Create;
try
Mylist.Add('邮件总数:'+GetTotalMailCount);
Mylist.Add('');
Mylist.Add('邮件所占的空间:'+GetTotalMailSize);
Mylist.Add('');
result:=Mylist.Text;
finally
MyList.Free;
end;
end;
procedure TFrmReceive1.N2Click(Sender: TObject);
begin
FrmStatistics1.ShowText:=GetInfo;
FrmStatistics1.ShowModal;
end;
procedure TFrmReceive1.PopupMenu1Popup(Sender: TObject);
begin
if dbgrid1.DataSource.DataSet.Eof=true then
begin
n1.Enabled:=false;
n2.Enabled:=false;
end
else begin
n1.Enabled:=true;
n2.Enabled:=true;
end;
end;
procedure TFrmReceive1.ComboBox2Select(Sender: TObject);
begin
if ComboBox2.ItemIndex=0 then
begin
Label3.Caption:='发信人email:';
edit8.Text:='';
edit8.Items.Clear;
edit8.Items.Add('收件箱');
edit8.Items.Add('发件箱');
edit8.Items.Add('收藏箱');
edit8.Items.Add('垃圾箱');
edit8.Items.Add('彻底删除');
edit8.Items.Add('');
DBGrid1.Columns[2].Title.caption:='发信人email';
end
else begin
Label3.Caption:='收信人email:';
edit8.Text:='';
edit8.Items.Clear;
edit8.Items.Add('未转发');
edit8.Items.Add('已转发');
edit8.Items.Add('转发失败');
edit8.Items.Add('');
DBGrid1.Columns[2].Title.caption:='收信人email'
end;
end;
procedure TFrmReceive1.DBGrid1DblClick(Sender: TObject);
begin
try
screen.Cursor:=crHourGlass;
with DBGrid1.DataSource.DataSet do
begin
if Eof=false then
begin
UnitDataModule1.DCOMConnection1.AppServer.MailID:=fields[0].AsString;
UnitDataModule1.DCOMConnection1.AppServer.UserMail:=UnitDataModule1.GetUserIDMailName(fields[1].AsString);
if ComboBox2.ItemIndex=0 then
UnitDataModule1.DCOMConnection1.AppServer.ReplyState:='0'
else
UnitDataModule1.DCOMConnection1.AppServer.ReplyState:='1';
UnitDataModule1.DCOMConnection1.AppServer.MailBox:=inttostr(ComboBox2.ItemIndex+1);
C_SaveMailData(UnitDataModule1.DCOMConnection1.AppServer.MailData);
FrmAnalyze1.NowDecodeMail;
FrmAnalyze1.showmodal;
end;
end;
finally
screen.Cursor:=crDefault;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -