我在用ActiveX的TShockwaveFlash的时候,当改变窗体大小的时候,TShockwaveFlash却不能跟着改变,请问有什么方法可以改变TShockwaveFlash的大小总是充满整个窗体

解决方案 »

  1.   

    你应在OnResize中去修改TShockwaveFlash的大小
      

  2.   

    我试着改变了TShockwaveFlash的大小,但是他播放的flash并不跟着刷新大小
      

  3.   


     shockwaveflash1.Hide;
     shockwaveflash1.Show;
      

  4.   

    也可以利用现成的方法
    SetZoomRect(int left, int top, int right, int bottom):
      

  5.   

    看我来吧  分都给我哦这里有个小技巧,就是用Button对Falsh控件发消息  至于为什么…… :(具体做法在Form上加一个最大化的Falsh控件,再加一个ButtonOK  解决procedure TFormFrontSelect.FormCreate(Sender: TObject);
    begin
      //***********************图片加载*******************************************//
      MainFlash.Movie:=FormMain.ApplicationPath+'images\FormMain\main.swf';
    end;procedure TFormFrontSelect.FormResize(Sender: TObject);
    begin
      SendMessage(Button1.Handle,wm_keydown,vk_space,1);
      SendMessage(Button1.handle,wm_keyup,vk_space,1);
      MainFlash.Refresh;
    end;procedure TFormFrontSelect.Button1Click(Sender: TObject);
    begin
      sendmessage(MainFlash.handle,wm_lbuttondown,0,0);
      sendmessage(MainFlash.handle,wm_lbuttonup,0,0);
    end;
      

  6.   

    procedure TForm1.FormResize(Sender: TObject);
    begin
     button1.setfoucus;
    //改变大小的时候先让别的控件获得焦点,然后获得焦点就可以了。
     shockwaveflash1.setfocus; 
    end;
      

  7.   

    最简单的办法:
      ShockwaveFlash1: TShockwaveFlash; 
      panelParent : TPanel; 
      用Panel包含Shockwave ActiveX控件,定义Panel的OnResize事件即可。 procedure TForm1.panelParentResize(Sender: TObject);
    begin
     shockwaveflash1.Width:=panelParent.Width;
     shockwaveflash1.Height:=panelParent.Height;
     shockwaveflash1.Hide;
     shockwaveflash1.Show;
     shockwaveflash1.SetFocus;
    end;
      

  8.   

    我遇到了同样的问题,同时我发现在窗体改变大小后,要用鼠标点一下shock控件一,它才能变成与窗体一样的大小,在vb下就没问题,郁闷!
      

  9.   

    你将form1.d***********这些字母忘了 。设为 True;
      

  10.   

    我用的是全屏,程序一进来就全屏,我可没发现闪烁的问题啊procedure TForm1.FormResize(Sender: TObject);
    begin
            shockwaveflash1.Width:=GetSystemMetrics(SM_CXSCREEN);
            shockwaveflash1.Height:=GetSystemMetrics(SM_CYSCREEN);
            shockwaveflash1.Hide;
            shockwaveflash1.Show;
            shockwaveflash1.SetFocus;
    end;
      

  11.   

    很简单,是另外的一个控件获得焦点就可以了,如:
    Panel1.SetFocus;
    ShockwaveFlash1.SetFocus;