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

📄 ufrmmain.pas

📁 Jedi Code Library JCL JVCL 组件包 JCL+JVCL超过300个组件的非可视/可视大型组件包。
💻 PAS
字号:
unit ufrmMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, JvPluginMan, ExtCtrls, JvComponent;

type
  TfrmMain = class(TForm)
    JvPluginManager1: TJvPluginManager;
    Memo1: TMemo;
    Panel1: TPanel;
    butLoadPlugins: TButton;
    lstPlugins: TListBox;
    butShowPlug: TButton;
    butUnload: TButton;
    Splitter1: TSplitter;
    procedure butLoadPluginsClick(Sender: TObject);
    procedure butShowPlugClick(Sender: TObject);
    procedure JvPluginManager1ErrorLoading(Sender: TObject; s: String);
    procedure butUnloadClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmMain: TfrmMain;

implementation

uses JvPlugin, JvPlgIntf;

{$R *.DFM}

procedure TfrmMain.butLoadPluginsClick(Sender: TObject);
var counter : integer;
    Plug : TJvPlugin;
    MyPlug : IMyPlugInInterface;
begin
     butLoadPlugins.Enabled:=False;

     // Loading Plugins
     Memo1.LInes.Add('Looking in '+ExtractFilePath(Application.Exename)+' for Plugins');
     JvPluginManager1.LoadPlugins;
     Memo1.Lines.Add(IntToStr(JvPluginManager1.PluginCount)+' plugins loaded.');

     // Check if plugins have correct interface
     counter:=0;
     while counter < JvPluginManager1.PluginCount do
     begin
          Plug:=JvPluginManager1.Plugins[counter];
          if Plug.GetInterface(IMyPlugInInterface, MyPlug) then
          begin
               Memo1.LInes.Add(IntToStr(counter)+' : '+Plug.Description+' V '+Plug.PluginVersion);
               lstPlugins.Items.Add(Plug.Description+' V '+Plug.PluginVersion);

               Plug.Configure;
               Inc(counter);
          end
          else
          begin
               Memo1.Lines.Add('Warning : Plugin '+Plug.Description+' has unknown interface - unloaded!');
               JvPluginManager1.UnloadPlugin(counter);
          end;
     end;
end;

procedure TfrmMain.butShowPlugClick(Sender: TObject);
var MyPlug : IMyPlugInInterface;
begin
     if (lstPlugins.ItemIndex<0) or
        (lstPlugins.ItemIndex>lstPlugins.Items.Count)
     then
         Exit;

     JvPluginManager1.Plugins[lstPlugins.ItemIndex].GetInterface(IMyPlugInInterface, MyPlug);
     MyPlug.ShowPlug(self);
end;

procedure TfrmMain.JvPluginManager1ErrorLoading(Sender: TObject;
  s: String);
begin
     Memo1.Lines.Add(s);
end;

procedure TfrmMain.butUnloadClick(Sender: TObject);
begin
      while JvPluginManager1.PluginCount<>0 do
            JvPluginManager1.UnloadPlugin(0);

      lstPlugins.Clear;

      butLoadPlugins.Enabled:=True;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     butUnloadClick(nil);
end;

end.

⌨️ 快捷键说明

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