• 插件之接口实现


    在插件中需要对接口中的方法进行具体的实现,主控程序才能调用并执行插件中的具体功能。

    unit uPlug;

    interface

    uses
      uInterface, Forms, Windows, Classes, SysUtils;

    type
      TModelService = class(TInterfacedObject, IModelInts)
      private
        function CheckFormExists(aClassName: pchar): Boolean;
      public
        procedure Cmd(aClassName: PChar);         // create visual plugin
        procedure Cmd2(aClassName: PChar);        // create non-visual plugin
      end;

    implementation

    { TModelService }

    function GetModelInts: IModelInts;
    begin
      result := TModelService.Create();
    end;

    exports
      GetModelInts;

    function TModelService.CheckFormExists(aClassName: pchar): Boolean;
    var
      i: Integer;
    begin
      result := False;
      for i := 0 to screen.FormCount - 1 do
      begin
        if UpperCase(screen.Forms[i].ClassName) = UpperCase(aClassName) then
        begin
          result := True;
          Screen.Forms[i].BringToFront;
          break;
        end;
      end;
    end;

    procedure TModelService.Cmd(aClassName: PChar);
    var
      f: TForm;
    begin
      if CheckFormExists(aClassName) then Exit;
      f := TFormClass(FindClass(aClassName)).Create(Application);
      f.Top := Application.MainForm.Height;
      f.Show;
    end;

    procedure TModelService.Cmd2(aClassName: PChar);
    var
      f: TForm;
    begin
     // if CheckFormExists(aClassName) then Exit;
      f := TFormClass(FindClass(aClassName)).Create(Application);
      f.Hide;
    end;

    end.

  • 相关阅读:
    LeetCode 43 字符串相乘
    HDU 1031 Design T-Shirt
    HDU 1728 逃离迷宫
    HDU 1285 确定比赛名次
    HDU 1116 Plays on words
    HDU 1195 Open the lock
    HDU 1072 Nightmare
    HDU 1272 小希的迷宫
    HDU 1273 漫步森林
    HDU 1269 迷宫城堡
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2358378.html
Copyright © 2020-2023  润新知