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

📄 testmainform.pas

📁 Form from DLL (Delphi source code)
💻 PAS
字号:
unit TestMainForm;

interface

uses
  Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Windows, Menus;

type
  TTestForm = class(TForm)
    btnTestMsg: TButton;
    btnModelessFormDestroy: TButton;
    Button1: TButton;
    Button2: TButton;
    Button4: TButton;
    Button5: TButton;
    MainMenu1: TMainMenu;
    Main1: TMenuItem;
    cbUseTScreen: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnTestMsgClick(Sender: TObject);
    procedure btnModelessFormDestroyClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  TestForm: TTestForm;
  LibHandle: THandle;

type
  TDestroyModeLessForm = procedure;
  TShowTestDllMessage = procedure;
  TDLLEntryPoint = procedure(dwReason: DWORD); stdcall;
  TDisplayModalForm2 = procedure(App: TApplication);
  TCreateModeLessForm2 = procedure(App: TApplication);
  TRestoreAppAndScr = procedure;
  TCreateMDIChildForm2 = procedure(App: TApplication; Scr: TScreen);
  TDestroyMDIChildForm = procedure;

var
  DestroyModeLessForm: TDestroyModeLessForm;
  ShowTestDllMessage : TShowTestDllMessage;
  DLLEntryPoint      : TDLLEntryPoint;
  DisplayModalForm2  : TDisplayModalForm2;
  CreateModeLessForm2: TCreateModeLessForm2;
  RestoreAppAndScr   : TRestoreAppAndScr;
  CreateMDIChildForm2: TCreateMDIChildForm2;
  DestroyMDIChildForm: TDestroyMDIChildForm;

implementation

{$R *.DFM}

procedure TTestForm.FormCreate(Sender: TObject);
begin
  if LibHandle <> 0 then
  begin
    ShowMessage('A FormLibrary m醨 bet鰈tve!');
    Exit;
  end;
  LibHandle := LoadLibrary('DLLForm.dll');
  try
    if LibHandle = 0 then
    begin
      raise Exception.Create('A FormLibrary-t nem tudom bet鰈teni!');
      Exit;
    end;
    @DestroyModeLessForm:= GetProcAddress(LibHandle, 'DestroyModeLessForm');
    @ShowTestDllMessage := GetProcAddress(LibHandle, 'ShowTestDllMessage');
    @DLLEntryPoint      := GetProcAddress(LibHandle, 'DLLEntryPoint');
    @DisplayModalForm2  := GetProcAddress(LibHandle, 'DisplayModalForm2');
    @CreateModeLessForm2:= GetProcAddress(LibHandle, 'CreateModeLessForm2');
    @RestoreAppAndScr   := GetProcAddress(LibHandle, 'RestoreAppAndScr');
    @CreateMDIChildForm2:= GetProcAddress(LibHandle, 'CreateMDIChildForm2');
    @DestroyMDIChildForm:= GetProcAddress(LibHandle, 'DestroyMDIChildForm');
  except
    FreeLibrary(LibHandle);
  end;
end;

procedure TTestForm.FormDestroy(Sender: TObject);
begin
//
end;

procedure TTestForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  @DestroyModeLessForm:= nil;
  @ShowTestDllMessage := nil;
  @DisplayModalForm2  := nil;
  @CreateModeLessForm2:= nil;
  @RestoreAppAndScr   := nil;
  @CreateMDIChildForm2:= nil;
  @DestroyMDIChildForm:= nil;
  if LibHandle = 0 then
  begin
    ShowMessage('A FormLibrary ki黵韙ve!');
    Exit;
  end;
  DLLEntryPoint(DLL_PROCESS_DETACH);
  LibHandle := 0;
  Action := caFree;
end;

procedure TTestForm.btnTestMsgClick(Sender: TObject);
begin
  ShowTestDllMessage;
end;

procedure TTestForm.btnModelessFormDestroyClick(Sender: TObject);
begin
  DestroyModeLessForm;
end;

procedure TTestForm.Button1Click(Sender: TObject);
begin
  DisplayModalForm2(Application);
end;

procedure TTestForm.Button2Click(Sender: TObject);
begin
  CreateModeLessForm2(Application);
end;

procedure TTestForm.Button4Click(Sender: TObject);
begin
  if cbUseTScreen.Checked then
    CreateMDIChildForm2(Application, Screen)
  else
    CreateMDIChildForm2(Application, nil);
end;

procedure TTestForm.Button5Click(Sender: TObject);
begin
  DestroyMDIChildForm;
end;

end.



⌨️ 快捷键说明

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