📄 testmainform.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 + -