教你做RM压缩程序

IT商界

  所用工具:Delphi6

  要求:Delphi6是功能强大的RAD开发工具,完全支持ActiveX,可以很方便地创建、注册、安装、发布和使用ActiveX控件、ActiveForm和OLE自动化对象。这里我们就如何使用ActiveX控件进行开发程序作一简介。

  目的:RealProducer Plus是制作RM 格式文件的制作工具,如果你的计算机中安装了这个程序,软件会自动在你的计算机中注册ProducerControl.ocx控件,这样我们就可以在Deliphi中直接导入这个控件来编写一个功能强大的RM文件压缩程序。RealProducer Plus的下载地址是:http://download.pchome.net/multimedia/video/6342.html

  第一步:导入ProducerControl.ocx控件。

  执行主菜单“Component/Imort ActiveX Control”命令,打开“Imort ActiveX”对话框,选择ActiveX控件列表中的“Real Producer ActiveX Control Libiary”控件。

  再单击Install按钮弹出“Install”对话框,确认安装即可。安装过程中会提示是否重新编译dclusr.bpl文件,确认后完成该控件安装。

  第二步:新建一个工程,并对工程做一些必要的设置:

  (1)执行主菜单“Project/Options...”命令,打开“Project Options”对话框,选择“Application”选项卡,设置程序名称“Title”为“RM Producer”,并为程序指定一个“Icon”;

  用鼠标点击窗体,在Object Inspector(如图1)中设置Form1窗体的相关属性;

  提示:“Object Inspector” 即是“对象检查器”,有关程序中涉及到的窗体及控件的属性均在这里设置。

  (2)修改Caption属性值为“RM Producer”;

  (3)修改BorderStyle属性为bsSingel;

  (4)展开BorderIcons属性,修改biMaximize属性为False。

  第三步:向Form1窗体中添加控件,并设置各个控件的属性。

  (1)选择Standard组件夹(如图2),向Form1窗体中添加一个GroupBox控件、一个Panel控件并调整它们的位置。更改GroupBox控件的caption属性值为“文件信息”,删除Panel控件caption属性值。

  (2)选择Standard组件夹,在GroupBox1控件中添加两个Label控件、两个Edit控件、两个Button控件,更改Label控件的caption属性值分别为“源文件:”、“目标文件:”,删除Edit控件的caption属性值,更改Button控件的caption属性值分别为“浏览...”、“保存...”,并设置“保存”按钮的Enabled属性为False。

  (3)选择Standard组件夹,在Panel控件中添加三个Label控件,并分别更改它们的caption属性值为“源视频图像”、“音频”、“RM 视频图像”。

  (4)选择ActiveX组件夹,将ProducerControl控件(如图3)添加到Panel控件中。

  (5)选择Standard组件夹,向Form1窗体三个Button控件,并更改它们的caption属性值分别为“开始制作”、“停止制作”、“退出程序”,设置“开始制作”、“停止制作”按钮的Enabled属性为False。

  (6)选择Dialogs组件夹,添加OpenDialog组件和SaveDialog组件(如图4),并点击OpenDialog控件的Filter属性右侧按钮,打开“Filter Editor”窗口,建立一个媒体文件过滤器Filter,便于以媒体文件(*.avi;*.mov;*.mpg;*.mpeg)格式打开,同理建立SaveDialog组件的Filter属性以*.avi文件格式保存。

  (7)最后调整Form1窗体各个控件位置如图5所示。

  第四步:接下来在各个按钮和ProducerControl控件下写入调用过程代码如下:

  (1)写入ProducerControl控件OnEncodingStarted过程代码:

  open.Enabled :=false;

  save.Enabled :=false;

  stop.Enabled :=true;

  start.Enabled :=false;

  Edit1.Enabled :=false;

  Edit2.Enabled :=false;

  ProducerControl1.Visible :=true;

  (2)写入ProducerControl控件OnEncod

  ingStopped过程代码:

  open.Enabled :=true;

  save.Enabled :=true;

  stop.Enabled :=false;

  Edit1.Enabled :=true;

  Edit2.Enabled :=true;

  (3)写入ProducerControl控件OnErrorOccurred过程代码:

  MessageDlg(ErrorString,mtError, [mbOK], 0);

  (4)点击窗体中的“浏览”按钮,在代码窗口中输入代码:

  OpenDialog1.Title:='选择要制作的媒体文件';

  if OpenDialog1.Execute then

  begin

  //Edit1控件保存了要进行压缩的源文件名信息

  Edit1.Text :=OpenDialog1.FileName;

  Edit2.Text :=ChangeFileExt(OpenDialog1.FileName ,'.rm');

  //自动修改其扩展名为RM

  save.Enabled:=true;//启用另存为按钮

  start.Enabled:=true;//启用开始解压按钮

  (5)点击窗体中的“保存”按钮,在代码窗口中输入代码:

  SaveDialog1.Title :='保存RM媒体文件';

  SaveDialog1.FileName:= Edit1.Text;//初始化另存为的默认文件名

  if SaveDialog1.Execute then Edit2.Text:=ChangeFileExt(SaveDialog1.FileName,'.rm');

  (6)点击窗体中的“开始制作”按钮,在代码窗口中输入代码:

  ProducerControl1.InputFilename :='';

  ProducerControl1.OutputFilename :='';

  ProducerControl1.InputFilename :=Edit1.Text;

  ProducerControl1.OutputFilename :=Edit2.Text;

  ProducerControl1.StartEncoding;

  (7)点击窗体中的“停止制作”按钮,在代码窗口中输入代码:

  if ProducerControl1.IsEncoding then

  ProducerControl1.StopEncoding;

  (8)点击窗体中的“退出程序”按钮,在代码窗口中输入代码:

  if ProducerControl1.IsEncoding then

  ProducerControl1.StopEncoding;

  ProducerControl1.FreeOnRelease;

  ProducerControl1.Destroy;

  Close;

  (9)写入SaveDialog控件OnCanClose过程代码:

  if FileExists(SaveDialog1.FileName) then //如果文件已经存在

  if MessageDlg('文件已经存在,是要覆盖它吗?', mtConfirmation, [mbYes,mbNo],0)<>mrYes then

  save.Click ;//如果选择了覆盖,则退出,否则,重新让用户选择文件

  这样,一个简单的RM制作程序就完成了,不过还有很多不足之处。比如在时间显示状态、窗体变化的实现方法等等还没有介绍。关于其他功能的开发我们将在以后的编程栏目中慢慢介绍给大家,让编程爱好者们更深入地学习。