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

📄 mainffm.pas

📁 Java实例入门
💻 PAS
字号:
unit MainFfm;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  { 首先定义一个过程数据类型TShowCalendar,该类型与CalendarLib.dll中输出的
  函数ShowCalendar()相一致}
  TShowCalendar = function (AHandle: THandle; ACaption: String): TDateTime; StdCall;

  { 声明一个特殊的异常类,当调用DLL失败时,触发该异常}
  EDLLLoadError = class(Exception);

  TMainForm = class(TForm)
    lblDate: TLabel;
    btnGetCalendar: TButton;
    procedure btnGetCalendarClick(Sender: TObject);
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.btnGetCalendarClick(Sender: TObject);
var
  LibHandle   : THandle;
  ShowCalendar: TShowCalendar;
begin
  { 加载DLL }
  LibHandle := LoadLibrary('CALENDARLIB.DLL');
  try
    { 如果加载失败,LibHandle的值将为0,将触发一个异常}
    if LibHandle = 0 then
      raise EDLLLoadError.Create('加载DLL失败');
    { 如果加载DLL成功,取得DLL的输出函数ShowCalendar的地址}
    @ShowCalendar := GetProcAddress(LibHandle, 'ShowCalendar');
    { 如果ShowCalendar函数成功输入,显示日历窗口,然后将选择的结果返回}
    if not (@ShowCalendar = nil) then
      lblDate.Caption := DateToStr(ShowCalendar(Application.Handle, Caption))
    else
      RaiseLastWin32Error;
  finally
    FreeLibrary(LibHandle); // 卸载DLL
  end;
end;

end.

⌨️ 快捷键说明

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