如何使Delphi OLEContainer内联显示AcrobatPDF文件,而不是启动AcrobatReader实例?

如何使Delphi OLEContainer内联显示AcrobatPDF文件,而不是启动AcrobatReader实例?,delphi,ole,Delphi,Ole,我的Delphi应用程序有一个通用查看器,可以使用TOleContainer查看DOC/DOCX、XLS/XLSX和PDF文件。用户将在其PC上安装MS Office和Acrobat Reader 这是通过简单地使用TOleContainer控件来实现的。TOleContainer放置在一个带有Align=alClient的TForm中 问题:OLEContainer正在MS Office documents DOC/DOCX/XLS/XLSX控件中内联打开文档。这是理想的行为。但是,对于PDF

我的Delphi应用程序有一个通用查看器,可以使用TOleContainer查看DOC/DOCX、XLS/XLSX和PDF文件。用户将在其PC上安装MS Office和Acrobat Reader

这是通过简单地使用TOleContainer控件来实现的。TOleContainer放置在一个带有Align=alClient的TForm中

问题:OLEContainer正在MS Office documents DOC/DOCX/XLS/XLSX控件中内联打开文档。这是理想的行为。但是,对于PDF文件,它会显示PDF文档的预览-仅第一页控件中没有滚动条-此外,它还会打开一个单独的Acrobat Reader窗口并在其中加载文档。我希望用户体验保持一致,避免打开单独的Acrobat Reader窗口查看PDF文档

有什么“技巧”可以让它按预期工作吗

这是当前代码:

object OleContainer1: TOleContainer
  Left = 0
  Top = 0
  Width = 533
  Height = 592
  AutoActivate = aaGetFocus
  Align = alClient
  BorderStyle = bsNone
  Caption = 'OleContainer1'
  SizeMode = smAutoSize
  TabOrder = 0
  ExplicitLeft = 1
  ExplicitTop = 1
  ExplicitWidth = 427
  ExplicitHeight = 433
end

procedure TfmDocPrv.PreviewDocument(const ADocumentFile: String);
begin
  Screen.Cursor := crHourGlass;
  OleContainer1.CreateObjectFromFile(ADocumentFile, False);
  Screen.Cursor := crArrow;
end;

提前谢谢

我认为如果你使用reader,你必须接受它。你需要的是一个合适的pdf查看器控件。只有当你将容器设置为aaGetFocus时,你才会有这种行为,试试看…@whosrdad:是的。改为aaManual,现在更好了,即不打开Acrobat窗口。但它仍然是一个只读控件,只显示第一页,没有滚动条。我想我需要按照赫弗南的建议,使用PDF查看器控件。我以前用Acrobat OCX或TLB做过,我想要相反的结果。PDF、BMP、ZIP都可以根据需要在单独的窗口中打开。但我想让MsWord也这么做。更改“自动激活”不起任何作用。请问有解决办法吗?