Slider

Recent Tube

Wisata

News Scroll

Favourite

Event

Culture

Gallery

Những chức năng Đối Tượng mới của VB.NET Phần I

Những chức năng Đối Tượng mới của VB.NET

(phần I)

V B.NET khắc phục những giới hạn về Đối Tượng (Object-Oriented) của VB6 và mang đến cho ta một ngôn ngữ lập trình hoàn toàn Object-Oriented (OO). Gần như mọi thứ trong VB.NET đều liên hệ với Object. Nếu bạn còn mới với lập trình theo hướng đối tượng (Object Oriented Programming) thì phần giải thích sau đây sẽ giúp bạn làm quen với nó.

Classes và Objects, nguyên tắc Abstraction

Theo phương pháp đối tượng, program được thiết kế để một phần code đại diện cho một vật tương đương ngoài đời. Nó được gọi là Class.

Khi lập trình VB6 ta đã dùng những controls từ Toolbox như Textbox, Label, Listbox ..v.v.. Textbox là Class của các Objects Text1, Text2. Cũng như Label1, Label2 là những Objects tạo ra từ Class Label. Ta hay dùng hai từ ClassObject lẫn lộn nhau. Điều đó không quan trọng, miễn là ta biết rằng Class là một ý niệm Trừu tượng (Abstraction), còn Object là một vật thực hữu. Giống như Class CaSĩ là một ý niệm trừu tượng, còn Object KhánhHà của Class CaSĩ là một người bằng da, bằng thịt với tiếng hát được nhiều người ngưỡng mộ.


Ta nói Object là một Instance của Class, và ta instantiate Class để có một Object.
Thường thường khi ta phân tích một vấn đề để thiết kế chương trình thì các Danh từ (Nouns) là những Classes. Giả dụ ta phân tích hoạt động của một Nhà Kho (warehouse). Ta có phòng chứa, ngăn tủ, bãi nhận hàng, xe nâng hàng, nhân viên ..v.v., mỗi thứ đều có thể là một Object nên ta sẽ thiết kế một Class cho nó.


Fields, Properties, Methods và Events, nguyên tắc
Encapsulation

Class CaSĩ diễn tả CaSĩ là người như thế nào. Như SốBàiHát là một Public Variable của Class, được gọi là Field có thể được đọc/viết trực tiếp. Còn Kiểu tóc (dài, ngắn, màu đen, có sọc nâu ...), Giọng hát (cao, trầm, ..). là những Properties.
Chúng cũng giống như Field nhưng được implemented (thi hành) bằng cách dùng procedures Property GetProperty Set. Property Set có thể được coded để kiểm soát nếu "Kiểu tóc" không thích hợp thì sẽ bị loại bỏ. Ngược lại, nếu "Kiểu tóc" thích hợp và được áp dụng thì ta sẽ thấy kết quả ngay là CaSĩ lại đẹp thêm ra. Thường thường Fields và Properties là các Danh từ (Nouns).

Một CaSĩ có khả năng ĐơnCa, KýTênLưuNiệm, TrìnhDiễn. Ta gọi đó là những Methods mà ta implemented bằng SubsFunctions (thí dụ như Function KýTênLưuNiệm sẽ return một chữ ký). Thường thường Methods là những Động từ (Verbs)

Đối với code bên trong Class thì Property giống như một Method còn đối với Client (tức là program đang dùng Class) thì Property giống như Field.

Đôi khi, nếu trình diễn lâu, CaSĩ cần một ly nước. CaSĩ sẽ Raise Event KhátNước để nhân viên trong hậu trường phục vụ.
Ta gọi chung Fields, Properties, Methods và Events là những Class Members (Các Thành viên của Class)

Có một ngoại lệ về sự khác biệt giữ Class và Member, đó là khi ta dùng các
Shared Class Members của một Class thì ta không nhất thiết phải instantiate một Object. Ta có thể dùng thẳng tên của Class như một
Object.

Cái lợi điểm của Object Oriented Programming là ta có thể gói tất cả những đặc điểm, khả năng của một Class vào trong một Unit of Code (Đơn vị mã) tự túc. Khi chúng ta lịch sự yêu cầu thì CaSĩ ĐơnCa. Ta biết CaSĩ ca thì thu hút lòng người, nhưng ta không cần biết làm sao CaSĩ đạt đến trình độ như vậy. Đó không phải là chuyện để chúng ta quan tâm.

Đối với ta Class CaSĩ là một Black Box, ta không biết và không cần biết chuyện gì xãy ra bên trong. Nếu sau nầy CaSĩ thay đổi kỹ thuật đơn ca để hát dễ và hay hơn, điều đó không ảnh hưởng gì đến chúng ta. Đặc tính OO ấy gọi là Encapsulation (Gói kín).


Cách ta lập trình với Class chỉ khác cách ta lập trình trước đây một chút thôi. Nếu trước đây ta phải tự làm, thì bây giờ ta instantiate một Object của Class chuyên trị những chuyện ta muốn làm, rồi bảo nó làm cho ta. So với ngoài đời, thí dụ bạn có mở một tiệm photocopy. Sau một năm bạn tự trông coi, công chuyện làm ăn ổn định và có kết quả tốt. Bạn muốn mở thêm một tiệm photocopy nữa ở chỗ khác. Trước khi đi lo chỗ khác bạn huấn luyện nghề photocopy cho một người làm công trung thành, rồi giao cho người ấy làm quản lý để thay thế bạn. Người đó là môt Object của Class QuảnLýTiệmPhotoCopy.

Trở lại cách lập trình, những công việc bạn làm hằng ngày trong tiệm photocopy là những Methods. Tất cả đồ đạc, sổ sách của tiệm là những Properties. Bạn đã sắp đặt mỗi tuần phải gọi người lại quét dọn tiệm, mỗi tháng phải bảo trì các máy photocopiers, đó là những Events. Bây giờ bạn gói tất cả những thứ ấy lại thành Class QuảnLýTiệmPhotoCopy. Lần đầu bạn instantiate Class QuảnLýTiệmPhotoCopy làm thành húTưThông, người sẽ thay thế bạn làm quản lý tiệm photocopy đầu tiên. Khi bạn muốn mở thêm tiệm thứ ba, bạn sẽ instantiate Class QuảnLýTiệmPhotoCopy một lần nữa làm thành DìSáuHương , người sẽ thay thế bạn làm quản lý tiệm photocopy thứ nhì.

Khi đã phân chia trách nhiệm các phần code thành những Class, bạn có thể tập trung tư tưởng vào từng Class một, không cần phải cố nhớ mọi thứ trong đầu khi giải quyết chuyện gì. Vì code của Class nào chỉ làm việc và ảnh hưởng trong phạm vi hoạt động của nó, không đụng chạm đến ai khác.
Nếu có gì trục trặc, thường thường ta có thể xác định đó là lỗi của Class nào tương đối dễ dàng.

Có một câu hỏi đùa rằng theo phương pháp OO thì: "Thay một bóng đèn cần bao nhiêu programmers?". Đáp: "Không cần programmer nào hết, bạn bảo đèn tự thay bóng của nó." (Lời đáp khác: "Không cần programmer nào hết, Microsoft đã đổi tiêu chuẩn ra bóng đêm.")

Do đó, nếu trước kia bạn lập trình để tự mình lo liệu công chuyện thì bây giờ hãy giao cho các Objects tự lo cho chúng. Tức là trước đây, nếu bạn là chủ điền mỗi năm bạn phải đi góp lúa ruộng, thì bây giờ bạn bảo các tá điền phải tự đem nộp lúa vào trong kho cho bạn. Sướng không? Chỉ ở trong thế giới lập trình OO, ta mới có thể mơ mộng như vậy.


Inheritance (Thừa Kế)

Nguyên tắc Encapsulation nói trên cho phép ta dùng nhiều Objects của một hay nhiều Classes một cách an toàn, tức là không sợ Methods của các Objects giẫm chân lên nhau.

Giả sử ta muốn dùng lại một Class để làm một Class mới, đặc biệt hơn, thí dụ như ta muốn làm nên một Class CaSĩ từ Class NghệSĩ. Cách làm ấy gọi là Inheritance (Thừa kế). Công việc thừa kế nầy được thực hiện qua một quá trình gọi là Subclassing.

Ở đây ta dùng lại Class NghệSĩ mà hoàn toàn không đụng đến Source Code (Nguồn Mã) của Class NghệSĩ. Nguyên tắc ấy gọi là Reusability (Dùng lại). Lưu ý là nếu ta dùng lại Source code mà có sửa đổi một chút trong Source Code thì không thể gọi là Reuse được vì có thể việc sửa đổi Source Code đó sẽ gây ra bugs mới. Ta phải chỉ cần Inherit từ Object Code của một Class cũng được thì mới thật sự là Reuse.

Ta dùng Inheritance để cho thêm các Class Members, tức là thêm đặc tính và chức năng. Thí dụ NghệSĩ thì có Property TâmHồn (NhạyCảm (Sentitive) , ThơMộng (Romantic),...), và Methods KýTênLưuNiệm, TrìnhDiễn. Class CaSĩ sẽ giữ y các đặc tính và chức năng ấy và thêm Sub ĐơnCa, Function HátNhạcYêuCầu, .v.v..

Tương tự như vậy, ta cũng có thể thừa kế từ Class NghệSĩ để tạo ra Class HọaSĩ. Class HọaSĩ sẽ giữ y các đặc tính và chức năng của Class NghệSĩ nhưng thêm Function VẽChânDung, Sub TrangTrí.

Trong thí dụ nói trên, người ta gọi Class NghệSĩ là Parent Class, Super Class hay Base Class. Còn Class CaSĩ và Class HọaSĩ được gọi là Child
Class
hay SubClass.

Nếu ta lại Inherit Class CaSĩ để tạo ra Class CaSĩTânNhạcClass CaSĩCổNhạc thì trong trường hợp nầy CaSĩ là Parent Class và CaSĩTânNhạc với CaSĩCổNhạc là Child Classes. Mỗi Casĩ một NghệSĩ nên ta có mối liên hệ "IS (Là)" giữa hai classes nầy. Nó khác với mối liên hệ "HAS (Có)". Thí dụ nếu trong Class CaSĩ một Object thuộc Class ĐầuBếp, thì một CaSĩ có thể cho ta một bữa ăn ngon nhưng không hẳn cho chính CaSĩ nấu. Nó giống như ngoài đời CaSĩ KhánhHà mướn một đầu bếp để đãi khách. Ta sẽ nói Class CaSĩ có mối liên hệ HAS (Có) với Class ĐầuBếp trong trường hợp nầy, chớ không phải Class CaSĩ IS (Là) một Class ĐầuBếp.

Trong .NET ta chỉ có Single (Đơn) Inheritance, tức là một Class không thể Inherit từ hai hay ba Classes khác. Giống như nói Con thừa kế từ Cha và Cha thừa kế từ ÔngNội, không có nhắc gì đến Mẹ hay BàNội. Một Child Class chỉ có một Parent Class, ngược lại, một Parent Class có thể có nhiều Child Classes.

Polymorphism (Đa dạng)

Polymorphism là khả năng dùng Class Members trùng tên của Objects thuộc về các Classes khác nhau. Thí dụ Objects KháchHàngNhânViên đều có Property Name. Nếu ta có thể lập trình để dùng Name mà không cần nói rõ nó thuộc về Object KháchHàng hay NhânViên thì đó là Polymorphism.

Polymorphism thể hiện dưới nhiều hình thức:
  1. Late Binding (Hiệu lực trễ): Có nghĩa là đợi đến giờ chót, khi execution, thì code mới biết nó đang làm việc với loại Object nào. Chữ binding nói đến "hiệu lực", late binding là có hiệu lực trễ. Điều nầy được thực hiện bằng cách hứa hẹn một Object thuộc Parent Class để trong lúc runtime ta có thể giao cho code một Object thuộc Child Class. Thí dụ ta hứa với khán giả sẽ có một CaSĩ trình diễn, lúc mở màn ta có thể cung cấp một CaSĩTânNhạc hay một CaSĩCổNhạc.



  2. Overloading (Quá tải, đã có rồi mà còn cho thêm) : Overloading cho phép ta viết trong cùng một Class nhiều versions khác nhau của Property hay Method. Chúng được phân biệt nhờ dùng parameters khác data type hay con số parameters khác nhau. Thí dụ một version của Sub được passed cho một Integer Parameter, một version khác được passed cho một String Parameter, một version khác lại được passed cho hai parameters. Khi ta gọi một Method của Class, nó sẽ dựa vào data type của parameters ta pass và số parameters ta pass để execute đúng version của Method.

    Một thí dụ về Overloading ngoài đời là khi ta yêu cầu CaSĩ đơn ca ta được phép đề nghị CaSĩ hát theo Karaoke, hay được Ban Nhạc Sống phụ họa, hay thêm cả một nhóm ca sĩ khác phụ họa .v.v..

  3. Overriding (Lấn quyền) : Overriding áp dụng cho Child Class đối với Parent Class. Trong Child Class ta cung cấp một Method cùng tên, cùng số parameters và cùng parameter data type với một Method trong Parent Class (ở đây không nhất thiết phải là Cha, có thể là ÔngNội hay nhiều đời trước) để dùng nó thay thế cho Parent Class Method. Ta nói Child Class thay đổi behaviour (tánh tình, cách xử sự) của Parent Class. Đại khái giống như cụ LữLiên trước đây Hát nhạc hài hước, bây giờ cô Khánh Hà thừa kế từ cụ nhưng override Method Hát của cụ và cô implement một Method Hát mới dùng cho nhạc trử tình.
    Lúc runtime, nếu một Object không có implementation của một Method thì CLR (Common Language Runtime) sẽ dùng Method của Parent Class của nó. Trong thí dụ trên vì cô KhánhHà có một implementation cho method Hát nên system sẽ dùng method đó, thay vì dùng method Hát của cụ LữLiên.

Dùng OO trong VB.NET

Tạo một Class mới

Bạn tạo một Class mới trong VB.NET IDE bằng cách dùng Menu Command Project | Add Class. Dialog Add New Item sẽ hiện ra, chọn Class trong số hình các Icons nằm trong khung bên phải của Dialog.


Source code của Class mới nầy sẽ được chứa trong một VB source file với extension vb. Trong VB.NET tất cả mọi VB source files đều có extension .vb. System sẽ nhận diện ra loại VB file (form, class, module,.v.v..) nhờ đọc content của file, chớ không dựa vào file extension.

Nếu bạn muốn đặt tên cho Class mới nầy là TheClass chẳng hạn, thì bạn có thể sửa tên nó trong Dialog. Khi bạn click button Open một file mới sẽ được cho thêm vào trong Project và nó chứa hai hàng code sau:

Public Class TheClass

End Class



VB.NET Functions and Statements Part I

VB.NET Functions and Statements

This bonus reference describes the functions and statements that are supported by Visual Basic .NET, grouped by category. When you’re searching for the statement to open a file, you probably want to locate all file I/O commands in one place. This is exactly how this reference is organized. Moreover, by grouping all related functions and statements in one place, I can present examples that combine more than one function or statement.
The majority of the functions are the same as in VB6. One difference is that many of the VB6 statements are implemented as functions in VB.NET. Moreover, many VB6 functions have an equivalent method in a Framework class. VB programmers are so accustomed to the old functions that they will not consider the alternatives—at least for a while. The Len() function of VB6 returns the length of a string. In VB.NET you can retrieve the length of a string with the Length method of a string variable. If strVar is declared as string variable, you can retrieve its length by calling the Length method:

Dim strVar As String = “a short string”
Console.WriteLine(“The string contains “ & strVar.Length & “ characters”)
Or you can call the Len() function passing the name of the string as argument:
Dim strVar As String = “a short string”
Console.WriteLine(“The string contains “ & Len(strVar) & “ characters”)

Most of the built-in functions are VB6 functions, and they accept optional arguments.
VB.NET uses overloaded forms of the same function, and this is an important difference you
have to keep in mind as you work with the built-in functions. If you omit an optional argument,
you must still insert the comma to indicate that an argument is missing. Optional arguments are
enclosed in square brackets. The Mid() function, for example, extracts a number of characters
from a string, and its syntax is

newString = Mid(string[, start][, length])

The starting location of the characters to be extracted is specified by the start argument, and the number of characters to be extracted is length. If you omit the start argument, the extraction starts with the first character in the string. If you omit the length argument, all the characters from the specified position to the end of the string are extracted. The only mandatory argument is the first one, which is the string from which the characters will be extracted, and this argument can’t be omitted.
The methods of the various classes are discussed in detail in the book. This bonus reference contains all the functions supported by VB.NET, and these functions are listed by category in Table 1.
Items in the table that are not followed by parentheses are statements and are also described in this reference.

Table 1: VB.NET Functions by Type
Type Functions
Input/Output InputBox(), MsgBox()
File and Folder Manipulation ChDir(), ChDrive(), CurDir(), Dir(), FileCopy(), FileDateTime(), FileLen,
GetAttr(), Kill, MkDir(), Rename(), RmDir(), SetAttr()
Data Type Identification IsArray(), IsDate(), IsDBNull(), IsNothing() IsNumeric(), IsReference,
TypeName(), VarType()
Variable Type Conversion CBool(), CByte(), CChar(), CDate(), CDbl(), CDec(), CInt(), CLng(), CObj(),

CShort(), CSng(), CStr(), CType()
String Manipulation Asc(), AscW(), Chr(), ChrW(), Filter(), InStr(), InStrRev(), Join(), LCase(),

Left(), Len(), LTrim(), Mid(), Mid, Replace(), Right(), RTrim(), Space(),

Split(), StrComp(), StrConv(), StrDup(), StrReverse(), Trim(), UCase()
Data Formatting Format(), FormatCurrency(), FormatDateTime(), FormatNumber(),

FormatPercent(), LSet(), RSet(), Str(), Val()
Math Abs(), Atan(), Cos(), Exp(), Fix(), Hex(), Int(), Log(), Oct(), Pow(),

Round(), Sin(), Sqrt(), Tan()
Date and Time DateAdd(), DateDiff(), DatePart(), DateSerial(), DateValue(), Day(),

Hour(), Minute(), Month(), MonthName(), Now(), Second(),

TimeSerial(), TimeValue(), Weekday(), WeekdayName(), Year()
Financial DDB(), FV(), IPmt(), IRR(), MIRR(), NPer(), NPV(), Pmt(), PPmt(), PV(),

Rate(), SLN(), SYD()
File I/O EOF(), FileAttr(), FileClose(), FileOpen(), FileGet(), FilePut(), FreeFile(),

Input(), LineInput(), Loc(), Lock(), LOF(), Print(), PrintLine(), Reset(),

Seek(), Unlock(), Width(), Write(), WriteLine()
Random Numbers Rnd(), Randomize
Graphics QBColor(), RGB()
Registry DeleteSetting(), GetAllSettings(), GetSetting(), SaveSetting()
Application Collaboration AppActivate(), Shell()
Miscellaneous Beep, CallByName(), Choose(), Environ(), IIf(), Option, Switch()

These functions and statements are described in the following sections, along with examples. The entries are not discussed alphabetically within each category. I start with the simpler ones so that I can present examples that combine more than one function and/or statement.
To be continued.

Thiết kế chương trình duyệt file âm thanh





Thiết kế chương trình duyệt file âm thanh

bằng Visual Basic

(Sử dụng MediaPlayer 6.x của Windows)

MediaPlayer của Windows từ version 6.x trở đi có thể player được rất nhiều dạng thức tập tinMultimedia khác nhau như: .avi, .asf, .asx, .rmi, .wav ; .ra, .ram, .rm, .rmm ; .mpg, .mpeg, .m1v, .mp2, .mpa, .mpe ; .mid, .rmi ; .qt, .aif, .aifc, .aiff, .mov ; .au, .snd ... Chất lượng cũng được cải thiện rất rõ rệt so với các phiên bản trước.

Nếu bạn đang sử dụng Windows 98 thì MediaPlayer đã sẵn sàng, nếu dùng Windows 95, 97 bạn buộc phải cài đặt bổ sung để lên đời MediaPlayer của mình. Bạn có thể tìm bộnâng cấp trên các CDROM phần mềm hay nằm chung trong bộ Internet Explorer 4.01 SP2.

Các file multimedia hiện này tràn ngập trên Internet, CDROM, rất nhiều. Đặc biệt là MP3 & Midi, 2 loại file này rất thịnh hành và đang được ưa chuộng.

Cái gì nhiều cũng gây nên ý tưởng (nói dúng hơn là sinh tật). Mặc dù chỉ cần double click lên file Mp3 hay Midi trong một trình quản lý file là có thể Play được một cách dễ dàng nhờ MediaPlayer của Windows nhưng cái gì của riêng mình mới khoái.

Chính vì vậy trong bài viết này tôi xin mạn phép hướng dẫn các bạn tự thiết kế một MediaPlayer rất tiện dụng và để dành làm của riêng. Tuynhiên nói của riêng không phải là tự làm hết mà chúng ta phải dùng một bảnsao của MediaPlayer trong chương trình.

Khái quát vềchương trình

Chúng ta sẽ thiết kế chưong trình có giao diện như sau:

Đầu tiên người dùng chọn ổ đĩa, thư mục có chứa các file Multimedia (thí dụ là file Midi). Kế đến nhấn nút Play hoặc double click trên tên file cần phát để nghe nhạc.

Ngoài ra còn có các nút Help, Author, Exit

Phía dưới là một MediaPlayer được nhúng vào chương trình, có thể điều chỉnh các chức năng như một chương trình riêng biệt (bạn có thể right click để mở menu tắt quen thuộc như khi dùng MediaPlayer), ở cuối của cửa sổ có dòng thông báo tên file & đường dẫn đang Play.


Các xác lập trong hộp thoại Options của MediaPlayer

Phía dưới của hộpchọn thư mục có một Text box dùng để lọc file. Các loại file này ngăn cách bởi dấu chấm phảy ";". Thí du như bạn muốn lọc các file MP3 & MIDI thì gõ vào: *.mp3;*.mid

Cũng lưu ý thêm là: nếu như trong hộp liệt kê tên file không có file nào, thì nút Play bị vô hiệu hoá (Enabled=False). Chỉ khi nào có file nút Play mới có tác dụng.

Thiết kế giao diện

Bạn hãy khởi động Visual Basic và bắt tay vào việc tạo dáng cho ứng dụng của mình. Cách bố trí các Control trên form tùy theo ý mỗi người, riêng tôi, tôi trình bày như sau:

Các thuộc tính & Caption của các Control trong chương trình:

FORM

Form1.caption = "MediaPlayer - Browser"

Form1.BorderStyle = 1-Fixed Single

Form1.Minbutton=True

TEXTBOX/LABELBOX

Text1.text="*.mid;*.mp3"

Label1.caption=""

COMMAND BUTTON

cmdPlay.caption="&Play"

cmdPlay.enabled=False

cmdHelp.caption="&Help"

cmdAuthor.caption="&Author"

cmdExit.caption="&Exit"

Trên thanh Toolbox của Visual Basic không có đối tượng MediaPlayer. Bạn phải dùng một Custom Control để thêm đối tượng đó vào.

Nhấn CTRL - T. Trong hộp thoại Components chọn Windows MediaPlayer (thường ở cuối danh sách), Click nút OK

Đối tượng MediaPlayer sẽ được thêm vào Toolbox, việc còn lại, chỉ cần vẽ nó lên form, đặt ở vị trí thích hợp (nó có tên mặc nhiên là MediaPlayer1)

Viết Code

Đầu tiên bạn cần cho bộ 3 control: Drive1, Dir1, File1 hoạt động. Hãy gõ đoạn Code sau đây để cho chúng "hiểu nhau"

Private Sub Dir1_Change()

File1.Path = Dir1.Path

If File1.ListCount = 0 Then
'Kiểm tra xem có file nào trong listbox File1 chưa

cmdPlay.Enabled = False
'Nếu chưa có thì vô hiệu nút Play

Else

cmdPlay.Enabled = True
'Nếu có rồi thì cho hiệu lực nút Play

End If

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Double click lên nút Play và viết

Private Sub Command1_Click()

MediaPlayer1.filename = Dir1.Path & "\" _
& File1.List(File1.ListIndex)

Label1.Caption = MediaPlayer1.filename

End Sub

Nếu thuộc tính AutoStart của MediaPlayer được gán bằng True. MediaPlayer sẽ tự động Play nếu bạn truyền cho thuộc tính FileName của nó một chuỗi là đường dẫn đến file cần Play. Khi thuộc tính FileName là rỗng, nó sẽ ngừng.

ở đoạn Code trên tôi đã ghép nối các thuộc tính của Drive1, Dir1 & File1 để chỉ ra file cần Play. Đoạn code sẽ gặp lỗi khi các file cần Play nằm ngoài thư mục gốc, bạn hãy tự hoàn chỉnh lấy bằng hàm IIF() hay câu lệnh IF

Dòng thứ 2 dùng để hiển thị đường dẫn file đang Play trong Labelbox ở cuối form.

Nếu muốn khi người dùng Double Click lên tên file trong danh sách file thì MediaPlayer sẽ Play file đó, bạn chỉ cần làm như sau:

Private Sub File1_DblClick()

cmdPlay_Click

End Sub

Để khả năng lọc (Pattern) của File1 hoạt động theo nội dung trong Textbox (Text1). Bạn cần gán các chuỗi trong Textbox do người dùng gõ vào mỗi khi có sự thay đổi (thuộc tính Change của Textbox).

Private Sub Text1_Change()

File1.Pattern = Trim(Text1)

End Sub

Đồng thời lúc chương trình khởi động bạn cũng phải gán nội dung trong Textbox cho thuộc tính Pattern của File1

Private Sub Form_Load()

Text1_Change

End Sub

MediaPlayer còn có một thuộc tính tên là PlayCount - Số lần phát lại một file nhạc, bạn hãy gán cho nó một số thích hợp trong khi thiết kế chương trình.

Khả năng của MediaPlayer còn tùy thuộc vào MediaPlayer đang sử dụng trong Windows của bạn.

Vậy là xong, một chương trình duỵệt file âm thanh, thật là quá đơn giản phải không bạn :-)

Thay lời kết

Bây giờ bạn có thể dịch ra file exe, đem tặng cho bạn bè "làm kỷ niệm". Nhớ chép thêm các file cần thiết cho chương trình nhé. MSDXM.OCX là file chứa Custom Control MediaPlayer đã sử dụng trong chương trình. Hãy nén lại cho chúng thật mi nhon trước khi chép ra đĩa mềm hay gởi kèm theo E-mail.

Trên đây chỉ là một chương trình rất đơn giản, nhưng tính năng có nó thì đáng khâm phục phải không bạn. Còn lại vài chi tiết khác bạn có thể tự mình làm lấy theo ý thích. Bạn có thể thêm vài tính năng nữa cho chương trình trở nên đa dụng, thí dụ như: Play các file Video, tự động Play một loạt các file...

Chúc bạn thành công.

Bài 1: Làm quen với Visual Basic

Bài 1: Làm quen với Visual Basic

I.Ứng dụng của lập trình
Lập trình ra các chương trình có tính ứng dụng cao trong mọi lĩnh vực
Ví dụ: chương trình đánh văn bản, chương trình nghe nhạc, các công cụ hệ thống,
phát triển mạng, game...
II.Bố cục 1 chương trình trong Visual Basic
1.Bố cục 1 chương trình trong Visual Basic 6.0
Class ten_lop
'Phần khai báo
Private Sub main()
'Các câu lệnh
end sub
end class

III. Các định nghĩa về hàm, thủ tục, hằng số và biến
1.Định nghĩa biến
Biến là được kí hiệu bằng 1 từ hoặc chữ thường có mang nội dung, biến có thể chứa một giá trị có thể thay đổi trong 1 chương trình
-Cách khai báo biến
Dim tên_biến
-Biến có 2 loại : biến cục bộ và biến toàn cục
Biến cục bộ là biến chỉ có tác dụng nơi ta khai báo biến đó và cũng có tác dụng đối với những hàm và thủ tục có vị trí tương đương với biến đó.
Biến toàn cục là biến có tác dụng trong toàn chương trình
VD:
class main()
dim x,z as Integer
x=0
x=x+1
z=a() 'tai day z co gia tri la 2
function a()
x=x+1
a=x
end function
end class
Qua đó ta có thể thấy được biến x bị ảnh hưởng cả bên ngoài hàm a và bên trong hàm a ->đây là biến toàn cục
VD2:
class main()
Dim z as Integer
z=a() 'tai day z co gia tri la null vi bien x la bien cuc bo khong
'anh huong ra ngoai lop main duoc
function a()
dim x as Integer
x=0
x=x+1
a=x
end function
end class

2.Định nghĩa hằng số
Hằng số cũng giống như biến nhưng có sự khác biệt là giá trị của hằng số là cố định không thay đổi
Khai báo hằng số
Const ten_hang

2.Định nghĩa hàm, thủ tục
Hàm là tổng hợp của nhiều lệnh.Người ta sử dụng hàm là vì trong một chương trình có nhiều tập lệnh được sử dụng nhiều lần.Những tập lệnh đó ta đưa vào 1 hàm, đến khi cần ta chỉ cần gọi hàm đó ra.Như vậy sẽ giúp giảm bớt được thời gian và dễ sử dụng
Hàm cũng giống biến cũng có 2 loại: private và public
Khi khai báo hàm mà sử dụng private thì hàm này chỉ có tác dụng trong lớp đó thôi
Còn nếu sử dụng public thì bạn có thể gọi hàm này từ bất kì lớp nào
Khai báo hàm
Public function ten_ham (tham so)
Private function ten_ham(tham so)
Khai báo thủ tục
Public Sub ten_ham (tham so)
Private Sub ten_ham(tham so)