mailaccts.pas

来自「一些小文档,不是很有用.但也还可以」· PAS 代码 · 共 188 行

PAS
188
字号
unit MailAccts;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TMailAccounts = class(TForm)
    lvAccounts: TListView;
    Label1: TLabel;
    btnCancel: TButton;
    btnAdd: TButton;
    btnProperty: TButton;
    btnDelete: TButton;
    procedure FormShow(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnPropertyClick(Sender: TObject);
    procedure lvAccountsDblClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
  private
  public
    procedure Init;
  end;

var
  MailAccounts: TMailAccounts;

procedure SetMailAccounts;

implementation

uses
  MailCenter, MailAcct;

{$R *.DFM}

procedure SetMailAccounts;
begin
  with TMailAccounts.Create(nil) do
    try
      ShowModal;
    finally
      Free;
    end;
end;

procedure TMailAccounts.Init;
var
  mi: TListItem;
begin
  lvAccounts.Items.BeginUpdate;
  try
    lvAccounts.Items.Clear;
    with MailCenterForm.tbMailAccount do
    begin
      First;
      while not Eof do
      begin
        mi := lvAccounts.Items.Add;
        mi.Caption := FieldByName('DISPLAY').AsString;
        mi.SubItems.Add(FieldByName('USERID').AsString);
        mi.SubItems.Add(FieldByName('SMTPHOST').AsString);
        mi.SubItems.Add(FieldByName('SMTPPORT').AsString);
        mi.SubItems.Add(FieldByName('POPHOST').AsString);
        mi.SubItems.Add(FieldByName('POPPORT').AsString);
        if FieldByName('STYLE').AsInteger and maDeleteAfterDownload = maDeleteAfterDownload then
          mi.SubItems.Add('下载后删除')
        else
          mi.SubItems.Add('');
        mi.Data := Pointer(FieldByName('ACCOUNTID').AsInteger);
        Next;
      end;
    end;
  finally
    lvAccounts.Items.EndUpdate;
  end;
end;

procedure TMailAccounts.FormShow(Sender: TObject);
begin
  Init;
  lvAccounts.SetFocus;
end;

procedure TMailAccounts.btnAddClick(Sender: TObject);
var
  DisplayName, UserID, Password, SMTPHost, POPHost: string;
  SMTPPort, POPPort, Style: Integer;
begin
  DisplayName := '';
  UserID := '';
  Password := '';
  SMTPHost := '';
  SMTPPort := 25;
  POPHost := '';
  POPPort := 110;
  Style := maDeleteAfterDownload;
  if SetAccount(DisplayName, UserID, Password, SMTPHost, POPHost, SMTPPort, POPPort, Style) then
  begin
    with MailCenterForm.tbMailAccount do
    begin
      Append;
      try
        FieldByName('DISPLAY').AsString := DisplayName;
        FieldByName('USERID').AsString := UserID;
        FieldByName('PASSWORD').AsString := Password;
        FieldByName('SMTPHOST').AsString := SMTPHost;
        FieldByName('SMTPPORT').AsInteger := SMTPPort;
        FieldByName('POPHOST').AsString := POPHost;
        FieldByName('POPPORT').AsInteger := POPPort;
        FieldByName('STYLE').AsInteger := Style;
        Post;
      except
        Cancel;
        raise;
      end;
    end;
    Init;
  end;
end;

procedure TMailAccounts.btnPropertyClick(Sender: TObject);
var
  DisplayName, UserID, Password, SMTPHost, POPHost: string;
  SMTPPort, POPPort, Style: Integer;
begin
  if lvAccounts.Selected = nil then
  begin
    MessageBox(Handle, '请先选择一个账号', '错误', MB_ICONERROR or MB_OK);
    Exit;
  end;
  with MailCenterForm.tbMailAccount do
  begin
    if not Locate('ACCOUNTID', Integer(lvAccounts.Selected.Data), []) then Exit;
    DisplayName := FieldByName('DISPLAY').AsString;
    UserID := FieldByName('USERID').AsString;
    Password := FieldByName('PASSWORD').AsString;
    SMTPHost := FieldByName('SMTPHOST').AsString;
    SMTPPort := FieldByName('SMTPPORT').AsInteger;
    POPHost := FieldByName('POPHOST').AsString;
    POPPort := FieldByName('POPPORT').AsInteger;
    Style := FieldByName('STYLE').AsInteger;
  end;
  if SetAccount(DisplayName, UserID, Password, SMTPHost, POPHost, SMTPPort, POPPort, Style) then
  begin
    with MailCenterForm.tbMailAccount do
    begin
      Edit;
      try
        FieldByName('DISPLAY').AsString := DisplayName;
        FieldByName('USERID').AsString := UserID;
        FieldByName('PASSWORD').AsString := Password;
        FieldByName('SMTPHOST').AsString := SMTPHost;
        FieldByName('SMTPPORT').AsInteger := SMTPPort;
        FieldByName('POPHOST').AsString := POPHost;
        FieldByName('POPPORT').AsInteger := POPPort;
        FieldByName('STYLE').AsInteger := Style;
        Post;
      except
        Cancel;
        raise;
      end;
    end;
    Init;
  end;
end;

procedure TMailAccounts.lvAccountsDblClick(Sender: TObject);
begin
  if lvAccounts.Selected <> nil then btnProperty.Click; 
end;

procedure TMailAccounts.btnDeleteClick(Sender: TObject);
begin
  if lvAccounts.Selected = nil then
  begin
    MessageBox(Handle, '请先选择一个账号', '错误', MB_ICONERROR or MB_OK);
    Exit;
  end;
  with MailCenterForm.tbMailAccount do
    if Locate('ACCOUNTID', Integer(lvAccounts.Selected.Data), []) then Delete;
  Init;
end;

end.

⌨️ 快捷键说明

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