我初学delphi。在用mediaplayer做播放器,动态创建了一个窗体
procedure TFrm_Main.CreateFrm_Display(const title:string); //创造一个用于播放的子窗体
var
Frm_Display:TFrm_Display;//窗体的名字
begin
Frm_Display:=TFrm_Display.create(application) ;
Frm_Display.Caption:=title;
end;
用mediaplayer的display属性将其指定到上面的窗体的panel上无法实现播放
procedure TFrm_Main.SkinButton2Click(Sender: TObject);
begin
OpenDialog1.Filename := '*.avi';
if opendialog1.Execute then
begin
frm_main.CreateFrm_Display(opendialog1.FileName);
mediaplayer1.FileName:=Opendialog1.FileName;
mediaplayer1.Open;
mediaplayer1.next;
mediaplayer1.Display:=Frm_Display.Panel1;
mediaplayer1.Play;
end;
请问是什么问题?
procedure TFrm_Main.CreateFrm_Display(const title:string); //创造一个用于播放的子窗体
var
Frm_Display:TFrm_Display;//窗体的名字
begin
Frm_Display:=TFrm_Display.create(application) ;
Frm_Display.Caption:=title;
end;
用mediaplayer的display属性将其指定到上面的窗体的panel上无法实现播放
procedure TFrm_Main.SkinButton2Click(Sender: TObject);
begin
OpenDialog1.Filename := '*.avi';
if opendialog1.Execute then
begin
frm_main.CreateFrm_Display(opendialog1.FileName);
mediaplayer1.FileName:=Opendialog1.FileName;
mediaplayer1.Open;
mediaplayer1.next;
mediaplayer1.Display:=Frm_Display.Panel1;
mediaplayer1.Play;
end;
请问是什么问题?
display应该是指向一个窗口的句柄,即HWND
楼上的不对。如果不是动态创建的窗体就可以,如:
mediaplayer1.Display:=Frm_Display.Panel1
Frm_Display不是动态创建的就可以
var
Frm_Display:TFrm_Display;//窗体的名字
begin
Frm_Display:=TFrm_Display.create(application) ;
Frm_Display.Caption:=title;
end;
该函数执行完成后Frm_Display 会被释放
如果你的Frm_Display是一个全局变量的话,
将
var
Frm_Display注释掉。mediaplayer1.Display:=Frm_Display.Panel1;如果这句编译没有错误的话,则Frm_Display肯定是在某个单元中定义的,而且被该单元所引用,因此你的CreateFrm_Display函数中的Frm_Display将成为一个本地变量,函数执行完成后将被释放。
var
Frm_Display:TFrm_Display;//窗体的名字