使用Delphi做一个PDF阅读器,用了Adobe Reader的OCX,直接搞个窗体,上面放上插入进来的Adobe控件,通过调用它提供的函数来阅读pdf文件,其实就是我自己在reader上搭了一个架子。但遇到的问题是,我如果改变窗体的大小,控件的大小怎么都不变。我用了很多方法,如改变其Align及Anchors属性、在onresize里给它的高度宽度赋值、用movewindow函数等都没用,有没有高手遇到过这种情况?求解答。

解决方案 »

  1.   

    一些控件可以通过设置Align来实现,
    一些就不可以了。
    控件少的话,可以变通一下。。
    procedure TForm1.FormResize(Sender: TObject);
    begin
      button1.Left := 0;
      button1.Top := 0 ;
      button1.Height := ClientRect.Bottom-Clientrect.Top;
      button1.Width :=  ClientRect.Right-ClientRect.Left;
    end;
      

  2.   

    控件.Align:=alclient 肯定没有问题!
      

  3.   

    控件.Align:=alclient 是不行的,你不信可以试试,5分钟就可以看到结果。发现Foxit的控件没有这个问题,而且相比而言既快又美观,可惜每个页面会有版权信息。
      

  4.   

    Align := alClient然后在窗体的OnResize事件中: reader.SetFocus;  //read为PDF控件名称Flash控件可以这样做,你试试看PDF控件行不行。
      

  5.   

    这是delphi的ocx的BUG,不光foxit的OCX存在该问题,windowsmediaplayer,flash都存在
    buG,并不是程序的问题,关于如何解决该问题
    Align := alClient 是不够的!1、先在窗口里定义一个类型:
    TLocOleCtrl = Class (TOleControl);2、在窗口的OnResize事件里加上:
    TLocOleCtrl (PDF控件名称).OnPosRectChange (Rect (0, 0, ClientWidth, ClientHeight));请尝试,并不代表完全解决!