如何在窗体中控制FLASH控件的大小随着窗口的大小而改变?(100分)

  • 主题发起人 主题发起人 志在DELPHI
  • 开始时间 开始时间

志在DELPHI

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,您们好小弟刚开始学习DELPHI的编程,请大家多多帮助我,谢谢。
我最近在DELPHI扣写了一个FLASH的控件,也就是写一个小型的FLASH播放器,
但是我却不知道如何在窗体中控制FLASH控件的大小随着窗口的大小而改变,
我写的程序的母窗体大小可以变化,但是FLASH的控件的大小却不能变化,
请各位大虾帮帮我,小弟这里有礼了。
 
设置控件的align属性,如果设为alclient就总和窗口一样大了
 
兄弟,你不是才问了吗?还是不行?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=545122
 
procedure TForm1.FormResize(Sender: TObject);
begin
sendmessage(button1.handle,wm_keydown,vk_space,1);
sendmessage(button1.handle,wm_keyup,vk_space,1);
flash.Refresh
end;
这次好一些,不用TIMER了,不过还是有延迟,继续改进
 
而且用ActiveX container或者VC或者嵌入IE中都可以正常调整大小,是不是Delphi的容器封装有漏洞?
 
这是简化之后的代码,也可以工作,Button1也可以换成其他可以获得焦点的控件
procedure TForm1.FormResize(Sender: TObject);
begin
// 夺取Flash的焦点
Button1.SetFocus;
// 调这个函数,我不知道为什么,但是却可以工作
SendCancelMode(Self);
// 重新设置Flash焦点
Flash.SetFocus;
end;
 
Traveller:

thank you for your help,but i have try to do it on your help lines.and get
the result is "NO",Please try it do yourself.thank you.


dxgbq
 
我试过的,可以正常工作,环境是Delphi5+flash5
注意Button1必须是可以获得焦点的窗口控件。
 
以下代码也可以工作,并且不再需要Button1之类的控件,更加简化

procedure TForm1.FormResize(Sender: TObject);
begin
ActiveControl := nil;
ActiveControl := Flash;
end;
 
帅呆了,呵呵
如果能做得像FLASHPLA那样快就好了,或是不出现FORM的底色,
我在CANRESIZE中搞,放大时可以,不过缩小又不行了,全部都弄好,好烦
 
我这里也是无法缩小(指无法比创建时的初始大小还小),不知道原因,
不过采用在FormCreate里面吧Flash.Width和Flash.Height都设为0的方式
应该可以避免这种情况的。
我怀疑大小调整问题的原因可能有两个:
1.某些该实现的接口,Delphi的TOleControl没有实现
2.Delphi的某些自定义消息和Flash自己的冲突。
 
我已经解决了这个问题,并且封装了一个控件,是调整大小时Flash一个接口没有被调用。
控件怎么才能传上来?
 
不知道各位用过swf browser 没有,据我初步反汇编,发现它是调用flashplayer,
并且把flashplayer的窗口作为自己的子窗口,软件目录下的player.exe实际上就
是flashplayer,请搞手指点该如何实现。
 
多人接受答案了。
 
后退
顶部