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

📄 loading.pas

📁 SunwayERP框架(支持Plugin)
💻 PAS
字号:
unit Loading;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BaseForm, StdCtrls, ExtCtrls;

type
  TfrmLoading = class(TfrmBaseForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FindPlugins;
    procedure AddMenuFromPlugin(aPlugin:String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmLoading: TfrmLoading;

implementation

uses Main, Login,Menus;

{$R *.dfm}

procedure TfrmLoading.AddMenuFromPlugin(aPlugin: String);
type
  TProc = procedure (var MenuStr:String);
var
  DllHnd:THandle;
  Proc:TProc;
  TmpStr:String;
  aItem:TMenuItem;
begin
  DllHnd:=LoadLibrary(Pchar(aPlugin));
  if DllHnd<>0 then
    begin
      Proc:=GetProcAddress(DllHnd,'GetMenuStr');
      if Assigned(Proc) then Proc(TmpStr);
      if TmpStr<>'' then
        begin
          aItem:=TMenuItem.Create(frmMain.MainMenu1);
          aItem.Caption:=TmpStr;
          aItem.OnClick:=frmMain.PluginMenuClick;
          aItem.Hint:=aPlugin;
          frmMain.N2.Add(aItem);
        end;
    end;
  FreeLibrary(DllHnd);
end;

procedure TfrmLoading.FindPlugins;
var
  FindRec:TSearchRec;
  i:integer;
begin
  i:=Findfirst(ExtractFilePath(Application.ExeName)+'*.dll',faAnyFile,FindRec);
  while i=0 do
    begin
      Panel1.Caption:='正在加载模块'+FindRec.Name+'...';
      Application.ProcessMessages;
      self.Update;
      AddMenuFromPlugin(FindRec.Name);
      i:=FindNext(FindRec);
    end;
end;

procedure TfrmLoading.Timer1Timer(Sender: TObject);
begin
  inherited;
  Timer1.Enabled:=False;

  if not FileExists(ExtractFilePath(Application.ExeName)+'Sunway.udl') then
    begin
      Messagebox(Handle,'在当前目录无法找到连接文件 "Sunway.udl"','启动错误',mb_ok+mb_iconError);
      Modalresult:=mrok;
      Exit;
    end;
  Panel2.Caption:='正在连接数据库...';
  Self.Update;
  frmMain.ADOConn.ConnectionString:='File Name='+ExtractFilePath(Application.ExeName)+'Sunway.udl';

  try
    frmMain.ADOConn.Open;
  except
    Messagebox(Handle,'无法连接到到指定服务器,请重新设置连接文件 "Sunway.udl" ','系统提示',mb_ok+mb_iconError);
    Modalresult:=mrok;
    Exit;
  end;

  Panel2.Caption:='正在验证用户身份...';
  Self.Update;
  frmLogin:=TfrmLogin.Create(Self);
  frmLogin.ShowModal;

  if not Main.Logined then
    begin
      Modalresult:=mrok;
      Exit;
    end;

  FindPlugins;

  Modalresult:=mrok;
  
end;

end.

⌨️ 快捷键说明

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