HOME-Au
HOME-Au
24h
24h
USA
USA
GOP
GOP
Phim Bộ
Phim Bộ
Videoauto
VIDEO-Au
Home Classic
Home Classic
Donation
Donation
News Book
News Book
News 50
News 50
worldautoscroll
WORLD-Au
Breaking
Breaking
 

Go Back   VietBF > Others (Closed Forums) > Archive - Old News 2005-2011 (closed)

 
 
Thread Tools
Default Lỗi chức năng Repeat của chương trình nghe nhạc
Old 09-06-2011   #1
Romano
R11 Tuyệt Thế Thiên Hạ
 
Romano's Avatar
 
Join Date: May 2007
Posts: 138,357
Thanks: 9
Thanked 6,559 Times in 5,505 Posts
Mentioned: 3 Post(s)
Tagged: 0 Thread(s)
Quoted: 38 Post(s)
Rep Power: 174
Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10
Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10Romano Reputation Uy Tín Level 10
Một bạn đọc đã xây dựng chương trình nghe nhạc bằng Visual Basic 6.0. Chương trình chạy được nhưng chức năng Repeat bị lỗi, không thể phát lặp lại được.

Cụ thể bạn đọc đã xây dựng chương trình và các đoạn mã theo quy trình như sau: Tạo Project mới loại "Standard EXE". Chọn menu Project.Components để hiển thị cửa sổ Components. Duyệt tìm và đánh dấu chọn vào 2 mục "Windows Media Player" và "Microsoft Common Dialog Controls 6.0" để "add" 2 điều khiển phục vụ chơi multimedia và duyệt hệ thống file vào Project. Chọn menu Tools.Menu Editor để chạy tiện ích thiết kế menu bar rồi thiết kế menubar cho Form ứng dụng gồm 1 menu pop-up có caption là File, trong menu pop-up này chứa 4 option lần lượt là mnuOpen, mnuPlay, mnuRepeat, mnuExit. Thiết kế Form ứng dụng gồm có 1 listbox có tên mặc định là List1, 1 Timer có tên mặc định là Timer1, 1 CommonDialog có tên mặc định là CommonDialog1, 1 WMP có tên là Media (vị trí của Timer và CommonDialog không quan trọng vì 2 đối tượng này sẽ bị ẩn khi ứng dụng chạy). Dời chuột về từng option menu và chọn nó để tạo thủ tục xử lý sự kiện click chuột của option tương ứng rồi viết code hiện thực. Chi tiết vấn đề này, mời quý bạn đọc tham khảo tại http://forum.pcworld.com.vn/default.aspx?g=posts&t=7358
Chúng tôi đã kiểm tra chương trình của bạn và tìm ra một số lỗi cũng như một số chi tiết chưa đúng như sau:
1. Bạn có dùng timer với thời gian đếm nào đó (chúng tôi thiết lập 1 giây), khi timer đếm xong thời gian qui định thì thủ tục Timer1_Timer() sẽ được kích hoạt, thủ tục này kiểm tra xem hết bài hát chưa, nếu hết thì chuyển sang bài kế tiếp trong danh sách. Đây là nguyên nhân làm chức năng Repeat hoạt động không chính xác. Lý do là bạn miêu tả điều kiện hết bài hát là khi còn ít hơn hay bằng 1 giây, điều kiện này không chính xác. Hơn nữa chế độ Repeat cũng như playlist mà bạn thiết lập cho WMP không còn tác dụng nữa (do bạn thiết lập lại từng bài hát trong thủ tục Timer1_Timer).
Cách giải quyết là xóa bỏ Timer và thủ tục Timer1_Timer(), để WMP tự hoạt động theo chế độ Repeat mà bạn thiết lập trong thủ tục mnuRepeat_Click().
2. Trong thủ tục mnuPlay_Click(), bạn chuyển danh sách bài hát từ ListBox sang WMP mà không xóa nội dung playlist có sẵn trong WMP, như vậy nếu người dùng chọn nhiều lần option Play thì mỗi bài hát trong listbox sẽ được thêm vào playlist của WMP nhiều lần, điều này là không cần thiết và dễ làm mất sự kiểm soát của chương trình.
Cách khắc phục là thêm lệnh xóa nội dung playlist hiện có trong WMP trước khi chuyển danh sách bài hát từ Listbox sang WMP. Cụ thể thủ tục mnuPlay_Click được hiệu chỉnh lại như sau:
'thủ tục xử lý option Play
Private Sub mnuPlay_Click()
'định nghĩa các biến cần dùng trong thủ tục
Dim i As Integer
Dim MyPlaylist As IWMPPlaylist
Dim MyMedia As IWMPMedia
Set MyPlaylist = Me.Media.currentPlay list
'xóa nội dung hiện có của Playlist
MyPlaylist.Clear
'chuyển các file từ Listbox vào Playlist
For i = 0 To List1.ListCount - 1
Set MyMedia = Me.Media.newMedia(Li st1.List(i))
MyPlaylist.appendIte m MyMedia
Next
Media.currentPlaylis t = MyPlaylist
'tô chọn bài đầu tiên trong ListBox
List1.ListIndex = 0
End Sub
3. Tương tự, trong thủ tục mnuOpen_Click(), bạn chuyển danh sách các file từ cửa sổ CommonDialog sang Listbox mà không xóa nội dung có sẵn trong Listbox, như vậy nếu người dùng chọn nhiều lần option Open thì listbox sẽ tích lũy dần rất nhiều file bài hát, các file này có thể trùng nhau, điều này là không cần thiết và dễ làm mất sự kiểm soát của chương trình.
Cách khắc phục là thêm lệnh xóa nội dung Listbox trước khi chuyển danh sách file bài hát từ CommonDialog sang Listbox. Cụ thể bạn nên thêm lệnh sau vào đầu thủ tục mnuOpen_Click():
'xóa nội dung hiện có của Listbox
List1.Clear
4. Việc tô đậm tên file bài hát trong Listbox đồng bộ với bài hát mà WMP đang chơi sẽ được thực hiện trong thủ tục xử lý sự kiện MediaChange của WMP. Cụ thể bạn hãy viết thêm thủ tục xử lý sự kiện MediaChange như sau:
'thủ tục xử lý sự kiện chuyển bài hát
Private Sub Media_MediaChange(By Val Item As Object)
'định nghĩa các biến cần dùng trong thủ tục
Dim MyMedia As IWMPMedia
Dim i As Integer, pos As Integer
Dim sbuf As String
Dim lbuf() As String
Set MyMedia = Item
'duyệt tìm file đang hát
For i = 0 To List1.ListCount - 1
'đổi pathname thành nhiều thành phần
lbuf = Split(List1.List(i), "\")
'xác định tên file bài hát
sbuf = lbuf(UBound(lbuf))
'xác định tên bài hát (bỏ phần mở rộng)
pos = InStr(1, sbuf, ".")
If pos <> 0 Then
sbuf = Mid(sbuf, 1, pos - 1)
End If
If MyMedia.Name = sbuf Then
'nếu bài đang hát là bài i trong Listbox thì tô đậm nó
List1.ListIndex = i
Exit For
End If
Next
End Sub
Nếu bạn hiệu chỉnh lại các chi tiết nêu trên thì ứng dụng sẽ chạy tốt, nó sẽ chơi lặp lại hay không tùy thuộc vào option Repeat có được chọn hay không. Mỗi lần hát bài mới. Listbox sẽ tô đậm tên file bài hát ấy cho người dùng tiện theo dõi.
Romano_is_offline  
Attached Thumbnails
Click image for larger version

Name:	visualbasicpic.jpg
Views:	15
Size:	144.5 KB
ID:	314984  
 
User Tag List

Thread Tools

Thêm một sĩ quan trẻ gốc Việt qua đời, nguyên nhân không như tin đồn “tào lao, tự tử” trên Facebook Tịch thu và bắt hàng loạt lãnh đạo công ty nhà Cường “đô la” Peter Arnett qua đời: tiếng nói độc lập từ chiến trường Việt Nam đến Baghdad
Cuộc chiến giành Warner & CNN: tiền mặt, thế lực, và bóng dáng Nhà Trắng Sự thật khó nghe: Trung Quốc giàu lên nhanh nhất khi .... Ngoại trưởng Nga thú nhận: Mỹ đã hứa trao lãnh thổ Ukraine cho Moscow
Chánh Văn phòng Tòa Bạch Ốc gây cú sốc về ông Trump trong cuộc phỏng vấn với Vanity Fair Thuế quan thổi ngược chiều: việc làm tay chân co lại, và “nhiệt” chính trị hạ dần Một dòng “sông” trong biển lệch nhịp: vì sao mặt biển Nhật Bản đang phình lên – và nghề cá lao đao
Khủng hoảng “affordability” ở Mỹ Trump mở cửa chip H200 cho Trung Quốc và cuộc chiến giành “quyền viết luật” cho trí tuệ nhân tạo Google và giấc mơ thay thế smartphone bằng cặp kính AI
Trump, Netflix và Paramount: Cuộc chiến thâu tóm Warner Bros. biến Hollywood thành bàn cờ chính trị Trung Quốc bứt tốc xuất khẩu, nông dân Mỹ sống bằng trợ cấp VN: Sợ áp lực mỗi khi ra tòa, Hoa hậu Thùy Tiên chấp nhận bản án 2 năm tù
Lại to tiếng: Ông Trump nói nữ ký giả của CNN là "ngu ngốc và độc ác" Zelensky chạy đua ngoại giao: London, Brussels, Rome và cái bóng hòa kế của Trump New Orleans trong vòng vây ICE: Chiến dịch “Catahoula Crunch” và nỗi lo của người Việt
“Huyền thoại ‘Trung Quốc là Singapore phóng đại’ đang sụp đổ như thế nào?” Trung Tá Nhảy Dù Bùi Quyền: Từ thủ khoa Võ Bị đến chiếc ghế trống sau 60 năm gặp lại Làm gì có “giải phóng” mà tôn vinh “chiến sĩ giải phóng”?
Cuba cá đầy biển, ngư dân vẫn đói: Khi thiên nhiên hào phóng nhưng thể chế “thắt nút cổ chai” Quận Cam: Người già gốc Việt sống trong nhà tiền chế, run rẩy trước mỗi lá thư cảnh cáo Doanh nghiệp châu Âu lặng lẽ tháo chạy khỏi Trung Quốc, nguyên nhân?
Năm tiếng trong Điện Kremlin: Hòa bình Ukraine đang đến gần? Một tổng thống lim dim, một thế giới nín thở Trump, Venezuela và cơn bão “tội ác chiến tranh” ở Washington
5 bí mật trên buồng lái mà phi công hiếm khi kể cho hành khách Đồng chí 3 X và chiếc bình xịt gây tê Hồi ký Trịnh Xuân Thanh và thương vụ 50 triệu đô đưa Nguyễn Cao Kỳ về nước
Vì sao Việt Nam vẫn vắng bóng Nobel Văn học? Khi sự thật bị nhào nặn: Nga, Trung Quốc và cuộc chiến bẻ cong hình ảnh dân chủ ‘Đổ bộ lên mặt trời ban đêm’ – khi ngu dốt ngồi lên ngai quyền lực
Xuất khẩu lao động – khi một quốc gia đóng gói tương lai của mình gửi ra nước ngoài Vụ kiện chất độc da cam – khi cộng sản Việt Nam tự làm nhục mình trước thế giới Nhiều người hỏi mình: “Qua Mỹ trễ vậy có hối hận không?”
Lũ quét miền Trung, Khánh Hoà, Nha Trang, “kỷ lục của kỷ lục” +video 12 ngày trên đất Mỹ: Những điều mắt thấy tai nghe của một bà mẹ Việt Khi ‘cái tôi’ phình to hơn thực tài của người Việt Cộng
Bài học nhớ đời khi lao vào bán hàng Amazon theo trend Pokémon Nghỉ hưu ở Texas: Thiên đường mới sau ‘giấc mơ California Nơi sóng radio chết lặng và những chuyện không thể giải thích
Bà Ngô Đình Nhu trên tầng 11 Paris: từ ánh đèn Dinh Độc Lập đến căn hộ cô quạnh “Đánh từ sẵn”: một đêm gõ cửa và cả đời bất an của chú Ba Lợi Người thầy tội nghiệp và nỗi đau hai chữ “lưu dung”

 
Lên đầu Xuống dưới Lên 3000px Xuống 3000px

iPad Videos Portal Autoscroll

VietBF Music Portal Autoscroll

iPad News Portal Autoscroll

VietBF Homepage Autoscroll

VietBF Video Autoscroll Portal

USA News Autoscroll Portall

VietBF WORLD Autoscroll Portal

Home Classic

Super Widescreen

iPad World Portal Autoscroll

iPad USA Portal Autoscroll

Phim Bộ Online

Tin nóng nhất 24h qua

Tin nóng nhất 3 ngày qua

Tin nóng nhất 7 ngày qua

Tin nóng nhất 30 ngày qua

Albums

Total Videos Online
Lên đầu Xuống dưới Lên 3000px Xuống 3000px

Tranh luận sôi nổi nhất 7 ngày qua

Tranh luận sôi nổi nhất 14 ngày qua

Tranh luận sôi nổi nhất 30 ngày qua

10.000 Tin mới nhất

Tin tức Hoa Kỳ

Tin tức Công nghệ
Lên đầu Xuống dưới Lên 3000px Xuống 3000px

Super News

School Cooking Traveling Portal

Enter Portal

Series Shows and Movies Online

Home Classic Master Page

Donation Ủng hộ $3 cho VietBF
Lên đầu Xuống dưới Lên 3000px Xuống 3000px
Diễn Đàn Người Việt Hải Ngoại. Tự do ngôn luận, an toàn và uy tín. Vì một tương lai tươi đẹp cho các thế hệ Việt Nam hãy ghé thăm chúng tôi, hãy tâm sự với chúng tôi mỗi ngày, mỗi giờ và mỗi giây phút có thể. VietBF.Com Xin cám ơn các bạn, chúc tất cả các bạn vui vẻ và gặp nhiều may mắn.
Welcome to Vietnamese American Community, Vietnamese European, Canadian, Australian Forum, Vietnamese Overseas Forum. Freedom of speech, safety and prestige. For a beautiful future for Vietnamese generations, please visit us, talk to us every day, every hour and every moment possible. VietBF.Com Thank you all and good luck.

Lên đầu Xuống dưới Lên 3000px Xuống 3000px

All times are GMT. The time now is 21:16.
VietBF - Vietnamese Best Forum Copyright ©2005 - 2025
User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Log Out Unregistered

Page generated in 0.13964 seconds with 13 queries