动态加载dll
type
TPrintProc = function(DataPrint: integer; PrintFile: WideString; PrintMode: Integer = 1): Integer; safecall; //根据动态库中的函数来自定义类型
////////////////////////////////////////////////////////////函数中///////////////////////////////////////////////////////////////////////////////////////////////////
procedure TTechSingleGridForm.PrintDataSet(PrintMode: Integer);
var
PrintProc: TPrintProc;
PrintHand: HMODULE;
begin
PrintHand := LoadLibrary('com_PrintReport.dll');
try
if PrintHand > 0 then
begin
@PrintProc := GetProcAddress(PrintHand, 'PrintByDataSet');
if Assigned(PrintProc) then
begin
try
PrintProc(Integer(ClientDataSet), Context.PageCode + '.rtm', PrintMode);
except
on E: Exception do
Case PrintMode of
0 : ComCommon.Prompt('打印预览失败,可能是如下的原因:' + #10#13 + E.Message);
1 : ComCommon.Prompt('读取打印格式失败,可能是如下的原因:' + #10#13 + E.Message);
2 : ComCommon.Prompt('打印失败,可能是如下的原因:' + #10#13 + E.Message);
end;
end;
end;
end
else ComCommon.Prompt('装载com_PrintReport.dll失败或缺少该动态库!');
finally
FreeLibrary(PrintHand);
end;
end;