我做了一个软件,在背景音乐播放过程中,要实现从一个文件夹内添加一个MID音乐文件到列表框中,对列表框中的音乐文件实现添加、播放和删除功能,播放形式有两种,循环播放和随机播放。
各位老大,能否帮助我写一写代码。我自己写了一些如下:
unit option;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Mmsystem,StdCtrls, Spin, Buttons, ExtCtrls;type
  TTfrmoption = class(TForm)
    Image1: TImage;
    Image2: TImage;
    GroupBox1: TGroupBox;
    ListBox1: TListBox;
    butOther: TBitBtn;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    radloopplay: TRadioButton;
    radramplay: TRadioButton;
    GroupBox2: TGroupBox;
    Label44: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    chkright: TCheckBox;
    chkvoice: TCheckBox;
    chkmusic: TCheckBox;
    chkauto: TCheckBox;
    AutoTime: TSpinEdit;
    chkAutoshow: TCheckBox;
    chksound: TCheckBox;
    chkcounttime: TCheckBox;
    SEchallengetime: TSpinEdit;
    chklx: TCheckBox;
    butSelect: TBitBtn;
    BitBtn3: TBitBtn;
    Open: TOpenDialog;
    procedure BitBtn1Click(Sender: TObject);
    procedure butOtherClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure butSelectClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure radloopplayClick(Sender: TObject);
    procedure radramplayClick(Sender: TObject);
    procedure AutoTimeChange(Sender: TObject);
    procedure chkautoClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Tfrmoption: TTfrmoption;implementation{$R *.dfm}procedure TTfrmoption.BitBtn1Click(Sender: TObject);
begin      mcisendstring('open   c:\123.mid   alias   mid',nil,0,0);   
      mcisendstring('play   mid   notify',nil,0,handle);   
 end;procedure TTfrmoption.butOtherClick(Sender: TObject);
var
  str:string;   
  begin
        if   open.Execute   then
        str:=open.FileName;
        while   pos('\',str)>0   do   
        begin              str:=copy(str,pos('\',str)+1,(length(str)-pos('\',str)-1));          end;
         end;
procedure TTfrmoption.BitBtn3Click(Sender: TObject);
begin
Close;
end;procedure TTfrmoption.butSelectClick(Sender: TObject);
beginend;procedure TTfrmoption.BitBtn2Click(Sender: TObject);
beginend;procedure TTfrmoption.ListBox1Click(Sender: TObject);
beginend;procedure TTfrmoption.radloopplayClick(Sender: TObject);
beginend;procedure TTfrmoption.radramplayClick(Sender: TObject);
beginend;procedure TTfrmoption.AutoTimeChange(Sender: TObject);
beginend;procedure TTfrmoption.chkautoClick(Sender: TObject);
beginend;end.

解决方案 »

  1.   

    我在代码中使用了mcisendstring('open  c:\123.mid  alias  mid',nil,0,0);  可以正常播放音乐。
    但是我希望能够更加灵活地选择音乐文件进行播放,可否用变量来写出来呢?
      

  2.   

    http://download.csdn.net/user/adayuer  这里有个delphi的源码,就是用 mciSendString 播放多媒体文件的。你可以参考一下。
      

  3.   

    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      sName : String;
      begin
      //播放音乐
       sName :='open'+Listbox1.ItemIndex+'Alias MR';
       mciSendString(Pchar(sName),'',0,0);
       mciSendString('play MR','',0,0);
      end;
    写成这个样子,请指教。
    sName :='open'+Listbox1.ItemIndex+'Alias MR';//读列表框中加亮的音乐路径
    为什么这样写不行呢,应该怎样写。
    提示Listbox1.ItemIndex的类型不正确。
      

  4.   


     sndPlaySound(Pchar('C:\Error.wav'),0);
      

  5.   

    sndPlaySound只能播放WAV文件,不能播放MIDI文件。郁闷。
      

  6.   

    mcisendstring可以播放MIDI MP3 WAV多个格式文件
      

  7.   

    各位老大,是我说的不清楚。
    我的软件上有一个列表框LISTBOX,一个添加按钮,一个播放按钮,一个删除按钮,播放有两种形式,一种是循环播放,一种是随机播放。要求添加按钮时要读取文件包内的M3U文件,如果没有则创建这个M3U文件,一按播放就采取两种形式(循环或随机)之一的方式对列表框内的文件进行播放,注意列表框内的内容就是创建的M3U文件的内容。删除按钮则是对列表框(M3U文件)的内容进行删除。
    各位老大,多多提供源码相助啊。