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

📄 frmmain.pas

📁 Mailserver Source code - Delphi. Simple Mail server source code. SMTP and POP3 protocols.
💻 PAS
字号:
unit FrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, DBCtrls, Menus, ExtCtrls, TB97Ctls,
  TB97, TB97Tlbr, ComCtrls,inifiles,ComObj,server_TLB, ImgList;

type
  TFrmMain1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    Dock971: TDock97;
    Toolbar971: TToolbar97;
    ToolbarButton971: TToolbarButton97;
    ToolbarButton972: TToolbarButton97;
    Panel3: TPanel;
    StatusBar1: TStatusBar;
    N9: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    MainPanel: TPanel;
    Panel1: TPanel;
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    Panel2: TPanel;
    ToolbarButton973: TToolbarButton97;
    N13: TMenuItem;
    ImageList1: TImageList;
    Panel4: TPanel;
    ListView1: TListView;
    Panel5: TPanel;
    Panel6: TPanel;
    StatusBarPanel: TPanel;
    Image1: TImage;
    Label1: TLabel;
    ToolbarSep971: TToolbarSep97;
    procedure TreeView1Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N6Click(Sender: TObject);

    procedure N11Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);

    procedure N2Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
  private
    { Private declarations }
    procedure ShowHint(AStr:string);
    procedure AddToListView;
    procedure ShowFrmUser1;
    procedure ShowFrmUserInfo1;
    procedure ShowFrmBroadcast1;
    procedure ShowFrmReadUserMail1;
    procedure ShowFrmReceive1;
    procedure ShowFrmViewLogs1(ATag:integer);
    procedure ShowFrmSysInfo1;
    procedure ShowFrmConfig1;
    procedure ShowFrmSysClean1;
    procedure ShowFrmTrashMail1;
  public
    { Public declarations }
    procedure LogIn(ACon:string);
    procedure LogOut;
  end;

var
  FrmMain1: TFrmMain1;

implementation

uses UnitDataModule, FrmUser, FrmReceive, FrmAboutBox,
  FrmPassword, FrmBroadcast, FrmUserInfo, UnitConst, FrmReadUserMail,
  FrmLogin, FrmViewLogs, FrmSysInfo, FrmConfig, FrmSysClean, FrmTrashMail;

{$R *.dfm}

procedure TFrmMain1.LogIn(ACon:string);
begin
  MainPanel.Visible:=true;
  Label1.Caption:='连接到 "'+ACon+'"   ';
  TreeView1.Selected:=frmmain1.TreeView1.Items[0];
  TreeView1Click(self);
end;

procedure TFrmMain1.LogOut;
begin
  MainPanel.Visible:=false;
  Label1.Caption:='';

end;

procedure TFrmMain1.ShowHint(AStr:string);
begin
  StatusBar1.Panels[1].Text:=' '+AStr;
  StatusBar1.Refresh;
end;
{===============================================================================
+                     start 选择功能                                           +
+                                                                              +
================================================================================}
procedure TFrmMain1.TreeView1Click(Sender: TObject);
var
  Mynode:Ttreenode;
  MyStr:string;
begin
  Mynode:=treeview1.Selected;
  if Mynode<>nil then
  begin
    MyStr:=Mynode.Text;
    ShowHint(MyStr);
    if Mynode.getFirstChild<>nil then  //有子节点的话
    begin
      AddToListView;
    end
    else begin //没有子节点
      if MyStr='用户管理' then
      begin
        ShowFrmUser1;  
      end
      else if MyStr='用户使用情况' then
      begin
        ShowFrmUserInfo1;
      end
      else if MyStr='系统设置' then
      begin
        ShowFrmConfig1;
      end
      else if MyStr='发送通告' then
      begin
        ShowFrmBroadcast1;
      end
      else if MyStr='系统信息' then
      begin
        ShowFrmSysInfo1;
      end
      else if MyStr='系统清理' then
      begin
        ShowFrmSysClean1;
      end
      else if MyStr='垃圾邮件' then
      begin
        ShowFrmTrashMail1;
      end
      else if MyStr='用户邮件查询' then
      begin
        ShowFrmReadUserMail1;
      end
      else if MyStr='综合查询' then
      begin
        ShowFrmReceive1;
      end
      else if MyStr='system' then
      begin
        ShowFrmViewLogs1(1);
      end
      else if MyStr='smtp' then
      begin
        ShowFrmViewLogs1(2);
      end
      else if MyStr='pop3' then
      begin
        ShowFrmViewLogs1(3);
      end
      else if MyStr='reply' then
      begin
        ShowFrmViewLogs1(4);
      end
    end;
  end;
end;

procedure TFrmMain1.ListView1DblClick(Sender: TObject);
var
  i:integer;
begin
  try
    if ListView1.Selected<>nil then
    begin
      for i:=0 to treeview1.Items.Count-1 do
      begin
        if  treeview1.Items[i].Text=ListView1.Selected.Caption then
        begin
          treeview1.Selected:=treeview1.Items[i];
          TreeView1Click(self);
          exit;
        end;
      end;
    end;
  finally
  end;
end;

//增加到listview中--------------------------------------------------------------
procedure TFrmMain1.AddToListView;
var
  MyListItem:TListItem;
  Mynode:Ttreenode;
begin
  if treeview1.Selected<>nil then
  begin
    Panel4.BringToFront;
    ListView1.clear;
    Panel5.Caption:=TreeView1.Selected.Text;
    Mynode:=TreeView1.Selected.getFirstChild;
    while Mynode<>nil do
    begin
      MyListItem:=ListView1.Items.Add;
      MyListItem.Caption:=Mynode.Text;
      MyListItem.ImageIndex:=Mynode.ImageIndex;
      Mynode:=Mynode.getNextSibling;
    end;
  end;
end;
//------------------------------------------------------------------------------

{===============================================================================
+                     end 选择功能                                             +
+                                                                              +
================================================================================}

{===============================================================================
|                  start          显示窗口                                     |
|                                                                              |
================================================================================}
procedure TFrmMain1.ShowFrmUser1;
begin
  FrmUser1.Show;  //显示窗体
  FrmUser1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmUser1.IniShow;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmUserInfo1;
begin
  FrmUserInfo1.Show;  //显示窗体
  FrmUserInfo1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmUserInfo1.IniShow;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmBroadcast1;
begin
  FrmBroadcast1.Show;  //显示窗体
  FrmBroadcast1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmBroadcast1.IniShow;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmReadUserMail1;
begin
  FrmReadUserMail1.Show;  //显示窗体
  FrmReadUserMail1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmReadUserMail1.IniShow;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmReceive1;
begin
  FrmReceive1.Show;  //显示窗体
  FrmReceive1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmReceive1.IniShow;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmSysInfo1;
begin
  FrmSysInfo1.Show;  //显示窗体
  FrmSysInfo1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmSysInfo1.IniShow;
  screen.Cursor:=crDefault;
end;


procedure TFrmMain1.ShowFrmViewLogs1(ATag:integer);
begin
  FrmViewLogs1.Show;  //显示窗体
  FrmViewLogs1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmViewLogs1.IniShow(ATag);
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmConfig1;
begin
  FrmConfig1.Show;  //显示窗体
  FrmConfig1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmConfig1.LoadConfig;
  screen.Cursor:=crDefault;
end;

procedure TFrmMain1.ShowFrmSysClean1;
begin
  FrmSysClean1.Show;  //显示窗体
  FrmSysClean1.Refresh;
end;

procedure TFrmMain1.ShowFrmTrashMail1;
begin
  FrmTrashMail1.Show;  //显示窗体
  FrmTrashMail1.Refresh;
  screen.Cursor:=crHourGlass;
  FrmTrashMail1.IniShow;
  screen.Cursor:=crDefault;  
end;

{===============================================================================
|                  end          显示窗口                                       |
|                                                                              |
===============================================================================}

//初始化------------------------------------------------------------------------
procedure TFrmMain1.FormCreate(Sender: TObject);
var
  myinifile:Tinifile;//ini文件
  HostStr:string;
begin
  myinifile:=Tinifile.Create(extractfilepath(application.ExeName)+'config.ini');
  try
    HostStr:=myinifile.ReadString('CONFIG','ADDRESS','');
    
  finally
    myinifile.Free;
  end;
end;
//------------------------------------------------------------------------------

//关闭--------------------------------------------------------------------------
procedure TFrmMain1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  application.Terminate;
end;
//------------------------------------------------------------------------------



{===============================================================================
                      start      菜单

===============================================================================}
procedure TFrmMain1.N11Click(Sender: TObject);
begin
  FrmPassword1.ClearEdit;
  while true do
  begin
    if FrmPassword1.ShowModal=mrOk  then
    begin
      if FrmPassword1.Checktrue=true then
      begin
        if UnitDataModule1.CheckPass(FrmPassword1.Edit1.Text)=true then
        begin
          if UnitDataModule1.SetPassword(FrmPassword1.Edit2.Text)=true then
          begin
            application.MessageBox('修改密码成功','提示信息',MB_ok or MB_ICONINFORMATION);
            break;
          end
          else
          begin
            application.MessageBox('修改密码出错','提示信息',MB_ok or MB_ICONSTOP);
          end;
        end
        else begin
          application.MessageBox('旧密码不正确,请重新输入。','提示信息',MB_ok or MB_ICONINFORMATION);
        end;
      end;
    end
    else begin
      break;
    end;
  end;
end;
//
procedure TFrmMain1.N2Click(Sender: TObject);
begin
  application.Terminate;
end;
//
procedure TFrmMain1.N9Click(Sender: TObject);
begin
  FrmLogin1.show;
end;
//
procedure TFrmMain1.N13Click(Sender: TObject);
begin
  LogOut;
end;
//
procedure TFrmMain1.N6Click(Sender: TObject);
begin
  FrmAboutBox1.ShowModal;
end;

{===============================================================================
                      end      菜单

===============================================================================}



procedure TFrmMain1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  with StatusBarPanel do
  begin
    Parent:=StatusBar1;
    Top:=Rect.Top;
    Left:=1;
    Height:=StatusBar1.Height;
    width:=StatusBar1.Panels[0].Width-2;
  end;
end;

end.

⌨️ 快捷键说明

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