ShockwaveFlash控件时遇到了一点问题?

303 2003-07-08 08:48:34
1.怎么能停止正在播放的文件。(用ShockwaveFlash1.Stop;时只是图像停止,但声音不停)
2.怎么实现全屏播放。(
  ShockwaveFlash1.Left:=form1.Left;
ShockwaveFlash1.Top:=form1.Top;
ShockwaveFlash1.Height:=form1.Height;
ShockwaveFlash1.Width:=form1.Width;根本不好使)
3.怎么把能在ShockwaveFlash上使用自己的右键菜单。
...全文
154 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yckxzjj 2003-10-27
  • 打赏
  • 举报
回复
希望对楼主有用处,是我程序中的一段代码,先与大家一起分享吧.
yckxzjj 2003-10-27
  • 打赏
  • 举报
回复
unit UFlashPlayFile;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls, Menus;

type
TFlashPlayFileFrm = class(TForm)
ShockwaveFlashPnl: TPanel;
ShockwaveFlash: TShockwaveFlash;
RightPM: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure WindowMaximize;
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure N6Click(Sender: TObject);
private
procedure WMSYSCommand(var msg: TWMSYSCommand); message WM_SYSCommand;
{ Private declarations }
public
{ Public declarations }
//自定义鼠标右键弹出消息
procedure MouseRightMessage(var Msg: TMsg; var Handled: Boolean);
end;

var
FlashPlayFileFrm: TFlashPlayFileFrm;

implementation

{$R *.dfm}

{ TFlashPlayFrm }

procedure TFlashPlayFileFrm.MouseRightMessage(var Msg: TMsg;
var Handled: Boolean);
begin
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = ShockwaveFlash.Handle) then
begin
Handled := True;
RightPM.Popup(Mouse.CursorPos.X,Mouse.CursorPos.y);
end;
end;

procedure TFlashPlayFileFrm.FormCreate(Sender: TObject);
var
hMenuHandle:Integer;
begin
hMenuHandle:=GetSystemMenu(Handle,False);
if (hMenuHandle<>0) then
DeleteMenu(hMenuHandle,SC_CLOSE,MF_BYCOMMAND);
Application.OnMessage:= MouseRightMessage;
end;

procedure TFlashPlayFileFrm.WMSYSCommand(var msg: TWMSYSCommand);
begin
if (Msg.CmdType = SC_MAXIMIZE) then
WindowMaximize
else
DefaultHandler(Msg);
end;

procedure TFlashPlayFileFrm.WindowMaximize;
begin
Setwindowlong(Handle,GWL_STYLE,Getwindowlong(Handle,GWL_STYLE)and not WS_CAPTION);
WindowState := wsMaximized;
end;

procedure TFlashPlayFileFrm.N7Click(Sender: TObject);
begin
if WindowState = wsNormal then
WindowMaximize
else
begin
SetWindowLong(Handle,GWL_STYLE, GetWindowLong(Handle,GWL_STYLE) or WS_CAPTION);
WindowState := wsNormal;
end;
end;

procedure TFlashPlayFileFrm.FormDestroy(Sender: TObject);
begin
ShockwaveFlash.FreeOnRelease;
end;

procedure TFlashPlayFileFrm.FormResize(Sender: TObject);
begin
ActiveControl := nil;
ActiveControl := ShockwaveFlash;
end;

procedure TFlashPlayFileFrm.N6Click(Sender: TObject);
begin
WindowMaximize;
end;

end.
nzy2000 2003-10-02
  • 打赏
  • 举报
回复
为什么ShockwaveFlash控件在delphi下控制这么难
控制进度我用timer来控制
弹出菜单我一直想用消息机制控制,但无法捕做他的消息
该怎么做???
303 2003-09-23
  • 打赏
  • 举报
回复
做一个自定义消息,如果有右击的消息时再Popup你的菜单。
Hyacinthus 2003-09-17
  • 打赏
  • 举报
回复
to 303(吴志坤) :

3.怎么把能在ShockwaveFlash上使用自己的右键菜单。 是怎么解决的,说出来给兄弟学习学习。控制不弹出ShockwaveFlash自带的右键菜单也可以
jenemery 2003-08-15
  • 打赏
  • 举报
回复
ShockwaveFlash1.stop;
ShockwaveFlash1.goframe(1);
fxm611 2003-08-15
  • 打赏
  • 举报
回复
使Flash停止:
ShockwaveFlash1.Stop;
ShockwaveFlash1.Movie := '1.swf';
其中1.swf为不存在的文件即可

ShockwaveFlash改变大小要使其他的控件获得焦点
如: ShockwaveFlash1.SetFouce;
Panel1.SetFouce;
xrenboy 2003-07-16
  • 打赏
  • 举报
回复
这取决于停止的帧上是否有动态特效(如一些swf最后一帧的效果)
303 2003-07-10
  • 打赏
  • 举报
回复
是有的文件就能停,有的就不能。我不知道是为什么?
ExSystem 2003-07-10
  • 打赏
  • 举报
回复
不可能吧,我就可以,难道是Flash(*.swf)文件有问题???
303 2003-07-09
  • 打赏
  • 举报
回复
player1.stopplay根不停不了图像
303 2003-07-09
  • 打赏
  • 举报
回复
真的没有人能实现吗?
303 2003-07-09
  • 打赏
  • 举报
回复
怎么取得当前播放的是第几帧?
我不想用一个Timer来实现!还能怎么实现?
xrenboy 2003-07-09
  • 打赏
  • 举报
回复
player1.stopplay;
303 2003-07-09
  • 打赏
  • 举报
回复
我怎么才能将Flash的播放停止下来?
xrenboy 2003-07-09
  • 打赏
  • 举报
回复
前进:player1.forward;
后退:player1.back;
当前播放的帧:player1.currentframe;
总帧数:player1.totalframe;
控制进度最方便的还是用timer和trackbar来实现:
//timer为timer控件,tbplay为trackbar控件 player为flash控件
procedure Tfrmmain.timerTimer(Sender: TObject);
begin
tbplay.Position:=player.CurrentFrame;
end;
procedure Tfrmmain.tbplayMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
timer.Enabled:=false;
player.StopPlay;

end;

procedure Tfrmmain.tbplayMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
player.Play;
timer.Enabled:=true;
end;

procedure Tfrmmain.tbplayMouseLeave(Sender: TObject);
begin
player.Play;
end;
303 2003-07-09
  • 打赏
  • 举报
回复
?????????????????????
fuzhan820 2003-07-08
  • 打赏
  • 举报
回复
up
303 2003-07-08
  • 打赏
  • 举报
回复
谢谢。这几个已经解决了。
还有几个:
  1.怎么控制进度?
  2.能否控制前进、后退等?
谢谢。
ExSystem 2003-07-08
  • 打赏
  • 举报
回复
更正一下:3.设置了PopupMenu好像不起作用,有待研究……
加载更多回复(2)

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧