发信人: coolyylu(GoodDay)
整理人: hunter__fox(2002-03-16 20:43:18), 站内信件
|
播放列表对象:
*---- 定义播放歌曲列表
DEFINE CLASS SongList as BaseForm
oPlayer = .F.
cDir = ""
oRoot = .F.
ShowWindow = 2
nDisTitle = 15
ADD OBJECT cmdHelp As CommandButton WITH SpecialEffect = 2 ,Caption = '?' ,Width = 15
ADD OBJECT PROTECTED lstList as listbox WITH SpecialEffect = 1
PROCEDURE init
this.lstList.width = this.Width
this.lstList.height = this.Height - This.nDisTitle
this.lstList.Top = This.nDisTitle
this.cmdHelp.Left = This.Width - this.cmdHelp.Width
this.cmdHelp.Height = This.nDisTitle
IF NOT FILE("SongList.dbf")
CREATE TABLE SongList FREE ( Name C(50) ,FileName C(200) ,Song M)
ENDIF
IF NOT FILE("Scheme.dbf")
CREATE TABLE Scheme FREE (Name c(50) ,FileName c(200))
IF USED("Scheme")
USE IN Scheme
ENDIF
ENDIF
ENDPROC
*---- 改变窗口尺寸的时候
PROCEDURE Resize
this.lstList.width = this.Width
this.lstList.height = this.Height - This.nDisTitle
this.cmdHelp.Left = This.Width - this.cmdHelp.Width
IF TYPE('This.oRoot.oPanel') = 'O'
IF This.oRoot.oPanel.lStick
This.oRoot.oPanel.Stick()
ENDIF
ENDIF
ENDPROC
PROCEDURE LoadSongList
LPARAMETERS tcDir
IF NOT USED("SongList")
USE SongList IN 0 EXCLUSIVE
ENDIF
SELECT SongList
*----获取目录
IF EMPTY(tcDir)
this.cDir = GETDIR()
ELSE
this.cDir = tcDir
ENDIF
*---- 如果目录不存在
IF NOT DIRECTORY(this.cDir)
RETURN 0
ENDIF
IF EMPTY(this.cDir)
RETURN 0
ENDIF
IF EMPTY(this.cDir)
USE IN SongList
RETURN
ENDIF
this.cDir = ADDBS(this.cDir)
nCount = ADIR(aFile ,this.cDir + "*.mp3","A")
FOR i = 1 TO nCount
INSERT INTO SongList (Name , FileName ,Song) Values(JUSTSTEM(JUSTFNAME(aFile[i,1])) ,this.cdir + aFile[i,1] ,"")
ENDFOR
nCount = ADIR(aFile ,this.cDir + "*.dat","A")
FOR i = 1 TO nCount
INSERT INTO SongList (Name , FileName ,Song) Values(JUSTSTEM(JUSTFNAME(aFile[i,1])) ,this.cdir + aFile[i,1] ,"")
ENDFOR
WITH this.lstList
.RowSourceType = 6
.RowSource = "SongList.Name"
.Visible = .T.
ENDWITH
this.lstList.Refresh()
ENDPROC
*---- 点击歌曲列表时播放歌曲
PROCEDURE lstList.click
*---- 播放当前文件
thisform.play()
ENDPROC
*---- 播放文件
PROCEDURE Play
IF NOT USED("SongList")
RETURN 0
ENDIF
IF NOT FILE(ALLTRIM(SongList.FileName))
MESSAGEBOX("检查路径" + JUSTPATH(ALLTRIM(SongList.FileName)) + ;
"是否存在文件" + JUSTFNAME(ALLTRIM(SongList.FileName)) ,16 ,"错误")
RETURN 0
ENDIF
thisform.oPlayer.FileName = ALLTRIM(SongList.FileName)
DO CASE
CASE INLIST(JUSTEXT(ALLTRIM(SongList.FileName)) ,"DAT" ,"MPG")
thisform.oPlayer.parent.show()
OTHERWISE
thisform.oPlayer.parent.hide()
ENDCASE
ENDPROC
*---- 右键歌曲列表框时
PROCEDURE lstList.MouseUP
LPARAMETERS nButton ,nShift ,nX ,nY
IF nButton = 2
IF NOT ThisForm.oRoot.oPanel.lStick
ThisForm.oRoot.oPanel.Show(thisform.Top + nY ,thisform.Left + nX)
ELSE
ThisForm.oRoot.oPanel.Show()
ENDIF
ENDIF
ENDPROC
*---- 帮助按钮 ,简单说明用法
PROCEDURE cmdHelp.Click
ENDPROC
*---- 删除歌曲
PROCEDURE DelSong
SELECT SongList
DELETE
PACK
ENDPROC
PROCEDURE ReName
IF NOT USED("SongList")
RETURN 0
ENDIF
This.oRoot.oSongList.Show()
oReName = NEWOBJECT("GetName")
oReName.SetName(ALLTRIM(SongList.Name))
oReName.Show()
IF NOT EMPTY(oReName.NewName)
REPLACE Name WITH oReName.NewName
ENDIF
oReName.Release
ENDPROC
*---- 加载MTV 或VCD故事片
PROCEDURE LoadMTV
DIMENSION aCDROM[1]
nCD = This.GetCDROM(@aCDROM)
FOR m.i = 1 TO nCD
cMTVDIR = aCDROM[nCD] + 'MPEGAV\'
IF DIRECTORY(cMTVDIR)
THISFORM.LoadSongList(cMTVDIR)
ENDIF
ENDFOR
ENDPROC
*---- 获得CDROM的光驱符号
PROCEDURE GetCDROM
LPARAMETERS taCDROM
nCDROM = 0
FOR nDrive = 68 TO 68 + 22
IF DRIVETYPE(CHR(nDrive)) = 5
nCDROM = nCDROM + 1
DIMENSION taCDROM[nCDROM]
taCDROM[nCDROM] = CHR(nDrive) + ":\"
ENDIF
ENDFOR
*---- 返回光驱驱动器的个数
RETURN nCDROM
ENDPROC
*---- 设置根对象引用释放
PROCEDURE Destroy
this.oRoot = .F.
IF USED("SongList")
SELECT SongList
ZAP
USE IN SongList
ENDIF
ENDPROC
*---- 当位置改变的时候 ,如果操作面板处于粘附的状态 ,则操作面板随播放列表窗口移动
PROCEDURE Left_Assign
LPARAMETERS nLeft
This.Left = nLeft
IF TYPE('This.oRoot.oPanel') = 'O'
IF This.oRoot.oPanel.lStick
This.oRoot.oPanel.Stick()
ENDIF
ENDIF
ENDPROC
*---- 当位置改变的时候 ,如果操作面板处于粘附的状态 ,则操作面板随播放列表窗口移动
PROCEDURE Top_Assign
LPARAMETERS nTop
This.Top = nTop
IF TYPE('This.oRoot.oPanel') = 'O'
IF This.oRoot.oPanel.lStick
This.oRoot.oPanel.Stick()
ENDIF
ENDIF
ENDPROC
*---- 加载喜爱歌集
PROCEDURE LoadFavorSong
ThisForm.oRoot.oSongList.Show()
oFavorSong = NEWOBJECT("ObjectList")
oFavorSong.SetName("Name" ,"FileName" ,"Scheme" ,"选择喜爱歌集")
oFavorSong.Show()
IF NOT EMPTY(oFavorSong.ListName)
IF NOT USED("SongList")
USE SongList IN 0 EXCLUSIVE
ENDIF
SELECT SongList
IF FILE(oFavorSong.ListName)
APPEND FROM (oFavorSong.ListName)
WITH this.lstList
.RowSourceType = 6
.RowSource = "SongList.Name"
.Visible = .T.
ENDWITH
this.lstList.Refresh()
ELSE
MESSAGEBOX("歌集不存在" ,"信息")
ENDIF
ENDIF
oFavorSong.Release()
ENDPROC
*---- 保存喜爱歌集
PROCEDURE SaveFavorSong
ThisForm.oRoot.oSongList.Show()
cFavorDir = "c:\mysong\"
*---- 存放喜爱歌曲集的目录
IF NOT DIRECTORY(cFavorDir)
MD (cFavorDir)
ENDIF
*---- 让用户输入喜欢的歌曲集的名称
oSaveFile = NEWOBJECT("GetName")
oSaveFile.SetName("喜爱" + TTOC(DATETIME()) ,"保存歌集:")
oSaveFile.Show()
IF NOT EMPTY(oSaveFile.NewName)
IF NOT USED("Scheme")
USE Scheme IN 0 EXCLUSIVE
ENDIF
SELECT Scheme
cFileName = cFavorDir + FORCEEXT(SYS(2015) ,"dbf")
INSERT INTO SCHEME(Name ,FileName) VALUES(oSaveFile.NewName ,cFileName)
USE IN Scheme
*---- 拷贝喜爱的歌曲集
SELECT SongList
COPY TO (cFileName)
ENDIF
oSaveFile.Release()
ENDPROC
ENDDEFINE |
|