home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Delphi.5 / Samples / sourceD5 / browutil.exe / BROWSER / MEDPLAY.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-03-06  |  6.0 KB  |  225 lines

  1. unit MedPlay;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ComCtrls, ToolWin, Buttons, MPlayer, StdCtrls, ExtCtrls, Menus;
  8.  
  9. type
  10.   TFrmMediaPlayer = class(TForm)
  11.     Panel2: TPanel;
  12.     MediaPlayer1: TMediaPlayer;
  13.     ListBox1: TListBox;
  14.     PopupMenu1: TPopupMenu;
  15.     InsertFile1: TMenuItem;
  16.     Remove1: TMenuItem;
  17.     Panel1: TPanel;
  18.     CheckBox1: TCheckBox;
  19.     TrackBar1: TTrackBar;
  20.     Timer1: TTimer;
  21.     CheckBox2: TCheckBox;
  22.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  23.     procedure FormActivate(Sender: TObject);
  24.     procedure FormDestroy(Sender: TObject);
  25.     procedure AssignFileName(sFileName : String);
  26.     procedure ListBox1DblClick(Sender: TObject);
  27.     procedure ListBox1Click(Sender: TObject);
  28.     procedure InsertFile1Click(Sender: TObject);
  29.     procedure Remove1Click(Sender: TObject);
  30.     procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
  31.       Shift: TShiftState);
  32.     procedure MediaPlayer1Notify(Sender: TObject);
  33.     procedure Timer1Timer(Sender: TObject);
  34.     procedure CheckBox2Click(Sender: TObject);
  35.     procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  36.       var DoDefault: Boolean);
  37.     procedure TrackBar1Change(Sender: TObject);
  38.   private
  39.     { Private declarations }
  40.     lResetTrackBarPos : Boolean;
  41.     procedure RemoveSelectedItem;
  42.     procedure PlayMediaPlayer;
  43.   public
  44.     { Public declarations }
  45.     procedure OpenPlayer(sFileName : String);
  46.   end;
  47.  
  48. var
  49.   FrmMediaPlayer: TFrmMediaPlayer;
  50.  
  51. implementation
  52.  
  53. uses Menu, Literals, OpenFile, GenFunc, Player;
  54.  
  55. {$R *.DFM}
  56.  
  57. procedure TFrmMediaPlayer.OpenPlayer(sFileName : String);
  58. var
  59.   FFlags : LongInt;
  60. begin
  61.   Application.CreateForm(TFrmPlayer,FrmPlayer);
  62.   FrmPlayer.Show;
  63.   CheckBox2Click(nil);
  64.   Self.Show;
  65.   AssignFileName(sFileName);
  66.   ListBox1.Items.Add(sFileName);
  67.   ListBox1.Selected[0] := True;
  68.   MediaPlayer1.Open;
  69. end;
  70.  
  71. procedure TFrmMediaPlayer.FormClose(Sender: TObject;
  72.   var Action: TCloseAction);
  73. begin
  74.   FrmPlayer.Free;
  75.   FrmPlayer := nil;
  76.   MediaPlayer1.Close;
  77.   Action := caFree;
  78. end;
  79.  
  80. procedure TFrmMediaPlayer.FormActivate(Sender: TObject);
  81. begin
  82.   FrmMenu.ShowClose(True);
  83.   FrmMenu.ShowQueryMenuItem(False);
  84.   FrmMenu.ShowTextFileMenuItem(False);
  85.   FrmMenu.ShowTableMenuItem(False);
  86. end;
  87.  
  88. procedure TFrmMediaPlayer.FormDestroy(Sender: TObject);
  89. begin
  90.   FrmMenu.ShowClose(False);
  91. //  FrmMenu.RemoveWindowItem(Self.Name)
  92. end;
  93.  
  94. procedure TFrmMediaPlayer.AssignFileName(sFileName : String);
  95. begin
  96.   if (UpperCase(ExtractFileExt(sFileName)) = FE_WAV) then
  97.     MediaPlayer1.DeviceType := dtAVIVideo;
  98.   MediaPlayer1.FileName := sFileName;
  99. end;
  100.  
  101. procedure TFrmMediaPlayer.ListBox1DblClick(Sender: TObject);
  102. begin
  103.   AssignFileName(ListBox1.Items.Strings[ListBox1.ItemIndex]);
  104.   MediaPlayer1.Close;
  105.   MediaPlayer1.Open;
  106. //  MediaPlayer1.EnabledButtons := [btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject];
  107.   PlayMediaPlayer;
  108. end;
  109.  
  110. procedure TFrmMediaPlayer.ListBox1Click(Sender: TObject);
  111. begin
  112.   AssignFileName(ListBox1.Items.Strings[ListBox1.ItemIndex]);
  113.   MediaPlayer1.Close;
  114.   MediaPlayer1.Open;
  115. end;
  116.  
  117. procedure TFrmMediaPlayer.InsertFile1Click(Sender: TObject);
  118. var
  119.   I : Integer;
  120.   sDirectory : String;
  121.   aFiles : Array [0..100] of String;
  122. begin
  123.   if (FrmOpenTable.OpenFileDlg(FF_MediaFiles + '|' + FF_All,sDirectory,aFiles) = mrOk) then begin
  124.     for I := Low(aFiles) to High(aFiles) do begin
  125.       if (aFiles[I] = '') then
  126.         Break;
  127.       ListBox1.Items.Add(sDirectory+aFiles[I]);
  128.     end;
  129.   end;
  130. //  FrmOpenTable.Free;
  131. //  FrmOpenTable := nil;
  132. end;
  133.  
  134. procedure TFrmMediaPlayer.Remove1Click(Sender: TObject);
  135. begin
  136.   RemoveSelectedItem;
  137. end;
  138.  
  139. procedure TFrmMediaPlayer.ListBox1KeyDown(Sender: TObject; var Key: Word;
  140.   Shift: TShiftState);
  141. begin
  142.   if Key = 46 then
  143.     RemoveSelectedItem;
  144. end;
  145.  
  146. procedure TFrmMediaPlayer.RemoveSelectedItem;
  147. var
  148.   I : Integer;
  149. begin
  150.   if (ListBox1.SelCount <= 0) then
  151.     Exit;
  152.   I := 0;
  153.   while (I <= (ListBox1.Items.Count - 1)) do begin
  154.     if ListBox1.Selected[I] then
  155.       ListBox1.Items.Delete(I)
  156.     else
  157.       I := I + 1;
  158.   end;
  159. end;
  160.  
  161. procedure TFrmMediaPlayer.MediaPlayer1Notify(Sender: TObject);
  162. begin
  163. //  TrackBar1.Position := 0;
  164.   if CheckBox1.Checked then begin
  165.       ListBox1.Selected[ListBox1.ItemIndex] := False;
  166.       if (ListBox1.ItemIndex >= (ListBox1.Items.Count - 1)) then
  167.         ListBox1.Selected[0] := True
  168.       else
  169.         ListBox1.Selected[ListBox1.ItemIndex+1] := True;
  170.       AssignFileName(ListBox1.Items.Strings[ListBox1.ItemIndex]);
  171.       MediaPlayer1.Close;
  172.       MediaPlayer1.Open;
  173.       PlayMediaPlayer;
  174.     end
  175.   else
  176.     Timer1.Enabled := False;
  177. end;
  178.  
  179. procedure TFrmMediaPlayer.Timer1Timer(Sender: TObject);
  180. begin
  181.   TrackBar1.Position := (MediaPlayer1.Position * TrackBar1.Max) div MediaPlayer1.Length;
  182. end;
  183.  
  184. procedure TFrmMediaPlayer.PlayMediaPlayer;
  185. begin
  186.   Timer1.Enabled := True;
  187.   MediaPlayer1.Play;
  188. end;
  189.  
  190. procedure TFrmMediaPlayer.CheckBox2Click(Sender: TObject);
  191. begin
  192.   if CheckBox2.Checked then begin
  193.       MediaPlayer1.Display := ListBox1;
  194. //      Self.Height := Panel1.Height + Panel2.Height + 316; // + (Self.Height - Self.ClientHeight);
  195.     end
  196.   else
  197.     begin
  198.       MediaPlayer1.Display := FrmPlayer;
  199. //      Self.Height := Panel1.Height + Panel2.Height + (Self.Height - Self.ClientHeight);
  200.     end;
  201.   ListBox1.Refresh;
  202. end;
  203.  
  204. procedure TFrmMediaPlayer.MediaPlayer1Click(Sender: TObject;
  205.   Button: TMPBtnType; var DoDefault: Boolean);
  206. begin
  207.   if (Button = btPlay) then
  208.     Timer1.Enabled := True;
  209. end;
  210.  
  211. procedure TFrmMediaPlayer.TrackBar1Change(Sender: TObject);
  212. begin
  213.   CheckBox1.Checked := False;
  214.   lResetTrackBarPos := False;
  215.   MediaPlayer1.PauseOnly;
  216.   Timer1.Enabled := False;
  217.   MediaPlayer1.Position := (TrackBar1.Position * MediaPlayer1.Length) div TrackBar1.Max;;
  218.   TrackBar1.Perform(CM_Exit,0,0);
  219.   MediaPlayer1.Play;
  220.   lResetTrackBarPos := True;
  221.   Timer1.Enabled := True;
  222. end;
  223.  
  224. end.
  225.