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

📄 config.pas

📁 用Delphi实现Dll插件的方式
💻 PAS
字号:
unit Config;
{版权所有 枫叶在线 HTTP://WWW.SKYGZ.COM SKYGZ@QQ.COM 风铃夜思雨}
interface

uses
  Windows, Forms, SysUtils, Controls, Classes,
  StdCtrls, ComCtrls, IniFiles;

type
  TFrmConfig = class(TForm)
    CmdOk: TButton;
    CmdCancel: TButton;
    ListView1: TListView;
    LbMailAddr: TLabel;
    LbMailUser: TLabel;
    LbMailPop3: TLabel;
    LbMailPass: TLabel;
    TxtTime: TEdit;
    TxtMailPass: TEdit;
    TxtMailPop3: TEdit;
    TxtMailUser: TEdit;
    TxtMailAddr: TEdit;
    IsChk: TCheckBox;
    CmdAdd: TButton;
    LbTime: TLabel;
    procedure CmdCancelClick(Sender: TObject);
    procedure CmdOkClick(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure IsChkClick(Sender: TObject);
    procedure CmdAddClick(Sender: TObject);
    procedure TxtTimeKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    MaxTime: Integer;
    procedure RWINI(B: Boolean);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  FrmConfig: TFrmConfig;

implementation

uses In_Mail_Dll;

{$R *.dfm}
procedure TFrmConfig.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
//  Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_TOOLWINDOW;
  Params.WndParent := ExeHandle;
end;

procedure TFrmConfig.RWINI(B: Boolean);
var Ini: TIniFile;
  TmpStr: string;
  i, Count, iTime: Integer;
  List: TListItem;
begin
  TmpStr := StrPas(GetDllPath);
  TmpStr := ExtractFilePath(TmpStr) + Copy(ExtractFileName(TmpStr), 1, Pos('.', ExtractFileName(TmpStr)) - 1) + '.ini';
  if B then
  begin
    Ini := TIniFile.Create(TmpStr);
    Count := Ini.ReadInteger('Config', 'Count', 1);
    ListView1.Items.Clear;
    for i := 1 to Count do
    begin
      List := ListView1.Items.Add;
      List.Caption := Ini.ReadString('Config', 'ID-' + IntToStr(i), '');
      List.SubItems.Add(Ini.ReadString('Config', 'POP3-' + IntToStr(i), ''));
      List.SubItems.Add(Ini.ReadString('Config', 'USER-' + IntToStr(i), ''));
      List.SubItems.Add(Ini.ReadString('Config', 'PASS-' + IntToStr(i), ''));
      iTime := Ini.ReadInteger('Config', 'TIME-' + IntToStr(i), 30);
      List.SubItems.Add(IntToStr(iTime));
      if MaxTime < iTime then MaxTime := iTime;
    end;
    Ini.Free;
  end else
  begin
    DeleteFile(TmpStr);
    Ini := TIniFile.Create(TmpStr);
    Ini.WriteInteger('Config', 'Count', ListView1.Items.Count);
    for i := 0 to ListView1.Items.Count - 1 do
    begin
      Ini.WriteString('Config', 'ID-' + IntToStr(i + 1), ListView1.Items[i].Caption);
      Ini.WriteString('Config', 'POP3-' + IntToStr(i + 1), ListView1.Items[i].SubItems.Strings[0]);
      Ini.WriteString('Config', 'USER-' + IntToStr(i + 1), ListView1.Items[i].SubItems.Strings[1]);
      Ini.WriteString('Config', 'PASS-' + IntToStr(i + 1), ListView1.Items[i].SubItems.Strings[2]);
      iTime := StrToInt(ListView1.Items[i].SubItems.Strings[3]);
      Ini.WriteInteger('Config', 'TIME-' + IntToStr(i + 1), iTime);
      if MaxTime < iTime then MaxTime := iTime;
    end;
    Ini.Free;
  end;
end;

procedure TFrmConfig.CmdCancelClick(Sender: TObject);
begin
  close;
end;

procedure TFrmConfig.CmdOkClick(Sender: TObject);
begin
  RWINI(false);
  close;
end;

procedure TFrmConfig.ListView1DblClick(Sender: TObject);
begin
  ListView1.DeleteSelected;
end;

procedure TFrmConfig.IsChkClick(Sender: TObject);
begin
  if IsChk.Checked then TxtTime.Enabled := true else TxtTime.Enabled := false;
end;

procedure TFrmConfig.CmdAddClick(Sender: TObject);
  function ChkList(List: TListView; Str: string): Boolean;
  var i: Integer;
  begin
    result := false;
    for i := 0 to List.Items.Count - 1 do
    begin
      if UpperCase(Str) = UpperCase(List.Items[i].Caption) then
      begin
        result := true;
        Exit;
      end;
    end;
  end;

  function IsEMail(const EMail: string): Boolean;
  var
    S: string;
    iPos: Integer;
  begin
    iPos := Pos('@', EMail);
    if iPos > 1 then
    begin
      S := Copy(EMail, iPos + 1, Length(EMail) - iPos);
      iPos := Pos('.', S);
      if (iPos > 1) and (Copy(S, iPos + 1, Length(S)) <> '') then
        result := true
      else result := false;
    end
    else
      result := false;
  end;
  function IsNum(const Str: string): Boolean;
  var i: Integer;
    C: Char;
  begin
    result := false;
    for i := 1 to Length(Str) do
    begin
      C := Str[i];
      if not (C in ['0'..'9']) then
      begin
        result := true;
        Exit;
      end;
    end;
  end;

var List: TListItem;
begin
  if TxtMailAddr.Text = '' then
  begin
    MessageBox(Handle, '请输入您的邮件地址!', '提示', MB_ICONHAND);
    TxtMailAddr.SetFocus;
    Exit;
  end;
  if IsEMail(TxtMailAddr.Text) = false then
  begin
    MessageBox(Handle, '您的邮件地址不正确!', '提示', MB_ICONHAND);
    TxtMailAddr.SetFocus;
    Exit;
  end;
  if ChkList(ListView1, TxtMailAddr.Text) then
  begin
    MessageBox(Handle, '此邮件地址已存在!', '提示', MB_ICONHAND);
    TxtMailAddr.SetFocus;
    Exit;
  end;
  if TxtMailPop3.Text = '' then
  begin
    MessageBox(Handle, '请输入您的POP3地址!', '提示', MB_ICONHAND);
    TxtMailPop3.SetFocus;
    Exit;
  end;
  if TxtMailUser.Text = '' then
  begin
    MessageBox(Handle, '请输入您的邮件账号!', '提示', MB_ICONHAND);
    TxtMailUser.SetFocus;
    Exit;
  end;
  if TxtMailPass.Text = '' then
  begin
    MessageBox(Handle, '请输入您的邮件密码!', '提示', MB_ICONHAND);
    TxtMailPass.SetFocus;
    Exit;
  end;
  if IsNum(TxtTime.Text) then
  begin
    MessageBox(Handle, '只能输入数字!', '提示', MB_ICONHAND);
    TxtTime.SetFocus;
    Exit;
  end;
  List := ListView1.Items.Add;
  List.Caption := TxtMailAddr.Text;
  List.SubItems.Add(TxtMailPop3.Text);
  List.SubItems.Add(TxtMailUser.Text);
  List.SubItems.Add(base64encode(TxtMailPass.Text));
  if IsChk.Checked then List.SubItems.Add(TxtTime.Text) else List.SubItems.Add('-1');
  TxtMailAddr.Clear;
  TxtMailPop3.Clear;
  TxtMailUser.Clear;
  TxtMailPass.Clear;
  TxtTime.Text := '15';
  IsChk.Checked := true;
end;

procedure TFrmConfig.TxtTimeKeyPress(Sender: TObject; var Key: Char);
begin
  if (Key > Chr(57)) or (Key < Chr(48)) and (Key <> Chr(8)) then Key := #0;
end;

end.

⌨️ 快捷键说明

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