2010-10-27 41 views
1

我在我的應用程序中成功添加了AcroPDF。當需要顯示PDF時,我創建一個AcroPDF動態實例,並將其插入TPanel,並將其設置爲alClient。我的問題是,當表單/面板調整大小時,AcroPDF不會遵循。僅在加載新文件的情況下。我嘗試了幾個解決方案無濟於事。我該怎麼辦?使用Delphi中的AcroPDF調整問題的大小

回答

5

這是最新版本的Adobe OCX控件的問題,您可以通過重新對焦控件來解決問題。在預覽對話框我有(其中有一個嵌入的,客戶端對齊AcroPdf控制)我用下面的OnResize處理程序的形式:

if Visible and (fPreviewV7 <> nil) then begin 
    FocusControl(nil); 
    FocusControl(fPreviewV7); 
end; 
+0

太棒了!非常感謝你。 – 2010-10-27 14:04:58

1

如果您使用的ActiveX的Acrobat Reader版本9嘗試在onResize受到此代碼TPanel的事件:

procedure TForm.PanelResize(Sender: TObject); 
var 
    rc: TRect; 
    h: THandle; 
begin 
    if Assigned(AcroPdf) then 
    begin 
    if (Windows.GetClientRect(AcroPdf.Handle, rc)) then 
    begin 
     h := Windows.FindWindowEx(AcroPdf.Handle, 0, PChar('Static'), nil); 
     if (h <> 0) then 
     Windows.MoveWindow(h, 0, 0, rc.Right - rc.Left, rc.Bottom - rc.Top, True); 
    end; 
    end; 
end; 

在主AcroPdf窗口的子窗口的問題不能調整大小。所以我們通過它的類名「Static」找到它並手動移動它以填充整個父窗口。此代碼無法在其他版本的Acrobat Reader上使用,因爲窗口層次結構和類名稱可能有所不同。