方法一:修正QRPrntr.pas
procedure TQRPrinter.PreviewModal;
begin
if assigned(FOnPreviewEvent) then
begin
try
FOnPreviewEvent(Self) //使用QRPreview可以正常操作, 不會出現cannot assign a tfont to a tfont
finally
end;
end
else
begin
with GlobalPreviewInterface.Create(nil) do
try
ShowModal(Self) //使用預設的Preview, 會出現 cannot assign a tfont to a tfont
finally
Free;
end;
end;
end;
QuickRep1.ShowProgress := False; //QRPrntr.pas 會呼叫 TQRProgressForm, 一樣會出現 cannot assign a tfont to a tfont
QRRunDXE2.dpk 重新編譯, 將產出的bpl dcp檔, 複製到dpk的連結目錄
c:\windows\system32
C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\lib\win32
方法二:
主要是由于在创建Dll的Form时,将外部调用程序的Application、Screen和MainForm都传给了Dll并且将Dll中的这几个对 象都替换掉了的缘故,解决的办法是只需将外部调用程序的Application.Handle及MainForm传给Dll并替换掉Dll中的这两项值就 可以了,我已测试通过,可以试一试。如:
var
p: PLongInt;
{DllApp: TApplication Dll中的Application
OutApp: TApplication 外部调用程序的Application
}
p:=@(DllApp.MainForm);
DllApp.Handle := OutApp.Handle;
p^:=LongInt(OutApp.MainForm);
轉貼至 http://bbs.csdn.net/topics/50408729
沒有留言:
張貼留言