📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, TabNotBk, Grids, DBGrids, Buttons, DB, ADODB,
Mask, ExtCtrls, ToolWin, Menus, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdMessage, IdPOP3;
type
TXmailForm = class(TForm)
TabbedNotebook1: TTabbedNotebook;
DBGrid1: TDBGrid;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Label6: TLabel;
Edit6: TEdit;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
BitBtn1: TBitBtn;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
DBGrid2: TDBGrid;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
RadioButton6: TRadioButton;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
Edit10: TEdit;
Label11: TLabel;
Edit11: TEdit;
Label12: TLabel;
Edit12: TEdit;
Label13: TLabel;
Edit13: TEdit;
Label14: TLabel;
Edit14: TEdit;
Label15: TLabel;
Edit15: TEdit;
Label16: TLabel;
Edit16: TEdit;
Label17: TLabel;
Edit17: TEdit;
Label18: TLabel;
MaskEdit1: TMaskEdit;
Label19: TLabel;
Edit18: TEdit;
Label20: TLabel;
Edit19: TEdit;
BitBtn2: TBitBtn;
GroupBox5: TGroupBox;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Image1: TImage;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
BitBtn5: TBitBtn;
GroupBox6: TGroupBox;
Edit20: TEdit;
Panel1: TPanel;
Panel2: TPanel;
Edit21: TEdit;
Label24: TLabel;
Edit22: TEdit;
Panel3: TPanel;
Edit23: TEdit;
Label25: TLabel;
Edit24: TEdit;
GroupBox7: TGroupBox;
Memo1: TMemo;
GroupBox8: TGroupBox;
ListBox1: TListBox;
ToolBar1: TToolBar;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Label26: TLabel;
Label27: TLabel;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
ToolBar2: TToolBar;
SpeedButton4: TSpeedButton;
GroupBox9: TGroupBox;
Label28: TLabel;
ComboBox1: TComboBox;
Label29: TLabel;
Edit25: TEdit;
Label30: TLabel;
Edit26: TEdit;
GroupBox10: TGroupBox;
ListBox2: TListBox;
ListBox3: TListBox;
Label31: TLabel;
Label32: TLabel;
GroupBox11: TGroupBox;
Label33: TLabel;
SpeedButton5: TSpeedButton;
IdPOP31: TIdPOP3;
Memo2: TMemo;
PopupMenu2: TPopupMenu;
N3: TMenuItem;
N4: TMenuItem;
procedure TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure Panel3Click(Sender: TObject);
procedure Panel2Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure initiateaccount;
procedure initiateaddress;
end;
var
XmailForm: TXmailForm;
page:integer;
implementation
uses addressbook;
type
TAccount=record
sendname:array[1..30] of char;
mailaddress:array[1..30] of char;
password:array[1..10] of char;
pop3server:array[1..20] of char;
smtpserver:array[1..20] of char;
deleteafterreceive:boolean;
veriftwhensendmail:boolean;
timeout:integer;
end;
{$R *.dfm}
procedure TXmailForm.TabbedNotebook1Change(Sender: TObject;
NewTab: Integer; var AllowChange: Boolean);
begin
page:=newTab;
if NewTab=0 then
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.sql.add('select * from 账号表');
adoquery1.Active:=true;
combobox1.Items.Clear;
while not adoquery1.Eof do
begin
combobox1.Items.add(adoquery1.fieldbyname('邮件地址').asstring);
adoquery1.next;
end;
adoquery1.Close;
memo2.ReadOnly:=true;
memo2.Lines.Clear;
end
else if NewTab=1 then
begin
Edit24.ReadOnly:=true;
Edit24.TabStop:=false;
end
else if NewTab=2 then
begin
DBgrid1.ReadOnly:=true;
adoquery1.close;
Adoquery1.SQL.clear;
adoquery1.sql.add('select * from 账号表');
adoquery1.Active:=true;
if AdoQuery1.Recordset.RecordCount=0 then
begin
RadioButton1.Checked:=true;
RadioButton2.Enabled:=false;
RadioButton3.Enabled:=false;
Edit2.Enabled:=true;
Edit6.text:='30';
RadioButton4.Checked:=true;
end
else
begin
RadioButton3.Checked:=true;
Edit2.Enabled:=false;
end;
end
else if NewTab=3 then
begin
DBgrid2.ReadOnly:=true;
DBGrid2.DataSource:=datasource1;
Adoquery1.SQL.clear;
adoquery1.close;
adoquery1.sql.add('select * from 通信簿');
adoquery1.Active:=true;
if AdoQuery1.Recordset.RecordCount=0 then
begin
RadioButton6.Checked:=true;
RadioButton7.Enabled:=false;
RadioButton8.Enabled:=false;
end
else
RadioButton8.Checked:=true;
end
else
begin
end
end;
procedure TXmailForm.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
if page=2 then
begin
if ADOQuery1.Recordset.RecordCount>0 then
begin
Edit1.text:=Adoquery1.fieldbyname('发送者姓名').asstring;
Edit2.text:=Adoquery1.fieldbyname('邮件地址').asstring;
Edit3.text:=Adoquery1.fieldbyname('密码').asstring;
Edit5.text:=Adoquery1.fieldbyname('接收邮件服务器').asstring;
Edit4.text:=Adoquery1.fieldbyname('发送邮件服务器').asstring;
CheckBox1.Checked:=Adoquery1.fieldbyname('是否保留副本').asboolean;
CheckBox2.Checked:=Adoquery1.fieldbyname('发送时是否验证').asboolean;
Edit6.text:=IntToStr(Adoquery1.fieldbyname('超时时间').asInteger);
RadioButton4.Checked:=Adoquery1.fieldbyname('邮件格式').asboolean;
RadioButton5.Checked:=not RadioButton4.Checked;
end;
end
else if page=3 then
begin
if ADOQuery1.Recordset.RecordCount>0 then
begin
Edit7.text:=Adoquery1.fieldbyname('姓名').asstring;
Edit8.text:=Adoquery1.fieldbyname('邮件地址').asstring;
Edit9.text:=Adoquery1.fieldbyname('单位').asstring;
Edit10.text:=Adoquery1.fieldbyname('职务').asstring;
Edit11.text:=Adoquery1.fieldbyname('单位传真电话').asstring;
Edit12.text:=Adoquery1.fieldbyname('通信地址').asstring;
Edit13.text:=Adoquery1.fieldbyname('单位邮政编码').asstring;
Edit14.text:=Adoquery1.fieldbyname('单位联系电话').asstring;
Edit15.text:=Adoquery1.fieldbyname('家庭住址').asstring;
Edit16.text:=Adoquery1.fieldbyname('家庭邮政编码').asstring;
Edit17.text:=Adoquery1.fieldbyname('家庭联系电话').asstring;
maskEdit1.text:=Datetostr(Adoquery1.fieldbyname('生日').asDatetime);
Edit18.text:=Adoquery1.fieldbyname('个人主页').asstring;
Edit19.text:=Adoquery1.fieldbyname('其它信息').asstring;
end;
end
else
begin
end
end;
procedure TXmailForm.FormActivate(Sender: TObject);
begin
TabbedNotebook1.ActivePage:='关于';
end;
procedure TXmailForm.BitBtn1Click(Sender: TObject);
var
adoquery2:TAdoquery;
begin
AdoQuery1.Close;
adoquery2:=TAdoquery.Create(self);
adoquery2.Connection:=adoconnection1;
adoquery2.close;
Adoquery2.sql.clear;
if RadioButton1.Checked then
begin
adoquery2.sql.add('insert into 账号表 values(:sendmail,:mailaddress,:password,:pop3server,:smtpserver,:deleteafterreceive,:verifywhen,:timeout,:code)');
adoquery2.Parameters.clear;
adoquery2.Parameters.CreateParameter('sendmail',ftstring,pdinput,10,Edit1.text);
adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
adoquery2.Parameters.CreateParameter('password',ftstring,pdinput,10,Edit3.text);
adoquery2.Parameters.CreateParameter('pop3pserver',ftstring,pdinput,20,Edit5.text);
adoquery2.Parameters.CreateParameter('smtpserver',ftstring,pdinput,20,Edit4.text);
adoquery2.Parameters.CreateParameter('deleteafterreceive',ftboolean,pdinput,1,checkbox1.Checked);
adoquery2.Parameters.CreateParameter('verifywhensendmail',ftboolean,pdinput,1,checkbox2.Checked);
adoquery2.Parameters.CreateParameter('timeout',ftinteger,pdinput,2,StrToInt(Edit6.text));
adoquery2.Parameters.CreateParameter('code',ftboolean,pdinput,1,RadioButton4.Checked);
adoquery2.Prepared;
adoquery2.ExecSQL;
end
else if RadioButton2.checked then
begin
adoquery2.sql.add('delete from 账号表 where 邮件地址=:mailaddress');
adoquery2.Parameters.Clear;
adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
adoquery2.Prepared;
adoquery2.ExecSQL;
end
else
begin
adoquery2.SQL.Add('update 账号表 set 发送者姓名=:sendmail,密码=:password,接收邮件服务器=:pop3server,发送邮件服务器=:smtpserver,是否保留副本=:deleteafterreceive,发送时是否验证=:verifywhensendmail,超时时间=:timeout,邮件格式=:code ');
adoquery2.sql.Add('where 邮件地址=:mailaddress');
adoquery2.Parameters.clear;
adoquery2.Parameters.CreateParameter('sendmail',ftstring,pdinput,10,Edit1.text);
adoquery2.Parameters.CreateParameter('password',ftstring,pdinput,20,Edit3.text);
adoquery2.Parameters.CreateParameter('pop3pserver',ftstring,pdinput,20,Edit5.text);
adoquery2.Parameters.CreateParameter('smtpserver',ftstring,pdinput,20,Edit4.text);
adoquery2.Parameters.CreateParameter('deleteafterreceive',ftboolean,pdinput,1,checkbox1.Checked);
adoquery2.Parameters.CreateParameter('verifywhensendmail',ftboolean,pdinput,1,checkbox2.Checked);
adoquery2.Parameters.CreateParameter('timeout',ftinteger,pdinput,2,StrToInt(Edit6.text));
adoquery2.Parameters.CreateParameter('code',ftboolean,pdinput,1,RadioButton4.Checked);
adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,30,Edit2.text);
adoquery2.Prepared;
adoquery2.ExecSQL;
end;
adoquery1.Active:=true;
if adoquery1.Recordset.RecordCount=0 then
begin
RadioButton1.Checked:=true;
RadioButton2.Enabled:=false;
RadioButton3.Enabled:=false;
Edit2.Enabled:=true;
initiateaccount;
end
else
begin
RadioButton2.Enabled:=true;
RadioButton3.Enabled:=true;
RadioButton3.checked:=true;
Edit2.Enabled:=false
end;
adoquery2.close;
end;
procedure TXmailForm.initiateaccount;
begin
Edit1.text:='';
Edit2.Text:='';
Edit3.text:='';
Edit4.text:='';
Edit5.text:='';
Edit6.text:='30';
CheckBox1.Checked:=true;
RadioButton4.Checked:=true;
edit1.SetFocus;
Edit2.Enabled:=true;
end;
procedure TXmailForm.RadioButton1Click(Sender: TObject);
begin
initiateaccount;
end;
procedure TXmailForm.BitBtn2Click(Sender: TObject);
begin
adoquery1.Close;
close;
end;
procedure TXmailForm.BitBtn4Click(Sender: TObject);
begin
adoquery1.close;
close;
end;
procedure TXmailForm.BitBtn3Click(Sender: TObject);
var
AdoQuery2:TAdoQuery;
begin
AdoQuery1.Close;
adoquery2:=TAdoquery.Create(self);
adoquery2.Connection:=adoconnection1;
adoquery2.close;
Adoquery2.sql.clear;
if RadioButton6.Checked then
begin
adoquery2.sql.add('insert into 通信簿(姓名,邮件地址,单位,职务,通信地址,家庭住址,单位邮政编码,家庭邮政编码,单位联系电话,家庭联系电话,单位传真电话,生日,个人主页,其它信息)');
adoquery2.SQL.add(' values(:name,:mailaddress,:units,:job,:unitsaddress,:homeaddress,:unitspostcode,:homepostcode,:unitsphone,:homephone,:faxphone,:birthday,:homepage,:other)');
adoquery2.Parameters.clear;
adoquery2.Parameters.CreateParameter('name',ftstring,pdinput,10,Edit7.text);
adoquery2.Parameters.CreateParameter('mailaddress',ftstring,pdinput,20,Edit8.text);
adoquery2.Parameters.CreateParameter('units',ftstring,pdinput,50,Edit9.text);
adoquery2.Parameters.CreateParameter('job',ftstring,pdinput,20,Edit10.text);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -