Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
1,09 MB
Nội dung
T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II MỤC LỤC Chương Một - Tự tạo Object Chương Hai – Debug 13 Chương Ba - Dùng Menu 25 Chương Bốn - Dùng Dialogs 38 Chương Năm - Dùng Đồ Họa (Phần I) 56 T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II Chương Một - Tự tạo Object Từ trước đến giờ, ta lập trình VB6 cách thiết kế Forms viết codes để xử lý Events controls Form Users click Button hay Listbox, v.v Nói chung, cách hữu hiệu để triển khai, ta hưởng lợi ích sau tốt nữa: Dùng lại code viết trước dự án khác Dễ nhận diện lỗi (error) phát xuất từ đâu Dễ triển khai dự án lớn cách phân phối thành nhiều dự án nhỏ Dễ bảo trì Mỗi lần dùng lại code, để y nguyên xi lý tưởng Việc gọi Reusability Nói cho ra, dùng lại thật ta cần dùng object code, code compiled rồi, tức hồn tồn khơng đụng đến source code Vì hể cho phép User sửa source code tạo hội cho bugs xuất hiện, lại phải debug lần Sự thách đố việc triển khai dự án phần mềm lớn thực thời hạn (on time), khơng lố tài khóa (within budget) dễ bảo trì (ease of maintenance) Muốn đạt mục tiêu ấy, ta phải triển khai nhanh cho chương trình có bugs, dễ bảo trì Giả dụ bạn đứng tổ chức đám cưới Thử tưởng tượng biết chuyện phải làm: từ danh sách quan khách, thiệp mời, ẩm thực, xe cộ, chụp hình, quay phim, văn nghệ thủ tục nghi lễ, tiếp tân, hoạt náo viên v.v Nếu bạn lo thật khơng biết nhớ cho hết Cũng may nhà hàng đảm trách việc in ấn thiệp mời, ban nhạc văn nghệ hoạt náo viên Thủ tục nghi lễ khơng qua bác Sáu Đạt, bác nhận lời mua quà cáp, lo tiếp tân, xe cộ thủ tục, nghi lễ Bác liên lạc với Mục sư chủ lễ để dặn chỗ nhà thờ đặt ngừơi giựt chuông người đàn Anh Tư Thơng có người bạn làm chủ tiệm hình, nên anh nhận trách nhiệm mướn người lo chụp hình, quay phim Như việc bạn tổ chức đám cưới rút lại soạn danh sách quan khách, diễn văn, chỗ ngồi dặn chỗ cho cặp vợ chồng hưởng tuần trăng mật Sở dĩ bạn cảm thấy trách nhiệm tổ chức khơng nặng nề nhà hàng, bác Sáu Đạt anh Tư Thông tự lo gánh vác khâu rắc rối Cái hay T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II người nầy tự lo định chi tiết cần phải làm khâu họ Chỉ cần lắm, họ liên lạc để lấy ý kiến bạn Họ giống người thầu bạn Chắc bạn lưu ý thí dụ tổ chức đám cưới nầy cho thấy nói chung muốn triển khai dự án lớn ta cần phải nhờ người thầu giúp đở Quả thật, cách quản trị viên cơng trình làm từ xưa đến Bây trở lại chuyện lập trình, ta tổ chức cách triển khai dự án phần mềm giống tổ chức đám cưới nói tốt q Thật ra, lý thuyết gia phần mềm không nghĩ đến chuyện trước đây, để thực việc người ta cần triển khai phương tiện, dụng cụ thích hợp Chỉ vịng 15 năm trở lại đây, việc trở nên cụ thể qua Operating Systems tinh vi, dùng Windows, ngơn ngữ lập trình Eiffel, SmallTalk, C++ v.v Lập trình theo hướng đối tượng (Object Oriented Programming) Nói cách nơm na, lập trình theo hướng đối tượng thiết kế phận phần mềm chương trình, gọi Objects cho phận tự lo liệu cơng tác giống người thầu ngồi đời Chắc có lẽ bạn hỏi Sub hay Function mà bạn viết để xử lý giai đoạn chương trình đảm trách vai trị thầu khơng? Người thầu làm cơng tác (Subs Functions) mà cịn chịu trách nhiệm thứ vật dụng cần thiết (data) cho việc Có cách định nghĩa khác cho Object Object gồm có data structure Subs/Functions làm việc data Thông thường, ta dùng Objects giám thị chúng, ngược lại có cố ta muốn chúng báo cáo cho ta biết Trong VB6, Forms, Controls hay ActiveX Objects mà ta dùng lâu Lấy thí dụ Listbox Một Listbox tự quản lý items hiển thị bên Ta biết listbox List1 có items cách hỏi List1.ListCount Ta biết item vừa selected cách hỏi List1.ListIndex Ta thêm item vào listbox cách T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II gọi method AddItem List1, v.v Nói cho ra, Object thực thể Class Nếu Listbox Class List1, List2 thực thể Listbox Cũng giống Bà Tư Cháo Lịng Dì Sáu Bánh Tầm thực thể Class Đầu Bếp Ngay form tên frmMyForm mà ta viết VB6 chẳng hạn, Class Thường thường ta dùng thẳng frmMyForm sau: frmMyForm.Show Trong trường hợp nầy thật frmMyForm Class dùng y Object Chớ muốn, ta tạo hai, ba Objects Class frmMyForm lúc thí dụ sau: Dim firstForm As frmMyForm Dim secondForm As frmMyForm Set firstForm = New frmMyForm Set secondForm = New frmMyForm firstForm.Show secondForm.Show Trong thí dụ ta declare firstForm secondForm Objects Class frmMyForm Sau ta làm nên (instantiate) Objects firstForm secondForm statements Set = New firstForm secondForm gọi instances Class frmMyForm Class giống khn, cịn Objects giống bánh làm từ khuôn Chắc bạn để ý thấy VB6 từ dùng hai từ Class Object lẫn lộn Đều nầy không quan trọng, miễn bạn nắm vững ý nghĩa chúng VB6 có yểm trợ Class mà ta triển khai instantiate Objects dùng Một Class VB6 có chứa data riêng nó, có Subs Functions mà ta gọi Ngồi Class cịn Raise Events, tức báo cho ta biết chuyện xãy bên Cũng giống Event Click CommandButton, User clicks lên button Raise Event Click ta xử lý Sub myCommandButton_Click(), chẳng hạn Classtrong VB6 khơng có hổ trợ Visual components, tức khơng có chứa controls TextBox, Label v.v Tuy nhiên, ta lấy control có sẵn từ bên ngồi đưa cho Object Class dùng T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II Bây bắt đầu viết Class Bạn mở Project loại Standard EXE Visual Basic Sau dùng Menu Command chọn Add Class Module: Khi Add Class Module dialog chọn Class Module click Open Bạn thấy mở khung trắng Project Explorer với Properties Window Trong Properties Window, sửa Name property Class thành clsBox đây: T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II Kế đánh vào dịng code đây, Option Explicit Private mX As Integer Private mY As Integer Private mWidth As Integer Private mHeight As Integer Public Property Let X(ByVal vValue As Integer) mX = vValue End Property Public Property Get X() As Integer X = mX End Property Public Property Let Y(ByVal vValue As Integer) mY = vValue End Property Public Property Get Y() As Integer Y = mY End Property Public Property Let Width(ByVal vValue As Integer) mWidth = vValue End Property Public Property Get Width() As Integer Width = mWidth T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II End Property Public Property Let Height(ByVal vValue As Integer) mHeight = vValue End Property Public Property Get Height() As Integer Height = mHeight End Property Public Sub DrawBox(Canvas As Object) Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B End Sub Public Sub ClearBox(Canvas As Object) Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), Canvas.BackColor, B End Sub Class clsBox có Properties: X, Y, Width Height Ta instantiate Box từ clsBox Mỗi Box có tọa độ (X,Y) kích thước chiều rộng chiều cao (width, height) Thật ta dùng Public statement để declare biến X, Y, Width Height Nhưng ta cố ý declare chúng Private, dạng mX, mY, mWidth mHeight Khi ta muốn thay đổi trị số chúng, ta dùng cách viết code bình thường (thí dụ: myBox.X = 80 ) Nhưng chương trình xử lý assignment statement ấy, execute loại method (giống Sub) gọi Property Let X (vValue) Ta thấy vValue assigned cho mX (i.e mX = vValue ), Private variable X Như công việc nầy chẳng khác sửa đổi Public variable X Tuy nhiên, ta viết thêm code Property Let X để làm Bạn có nhớ thiết kế Label, lần bạn dùng Property Window để edit Font size, forcolor hay backcolor properties Label thay đổi, mà kết thay đổi có hiệu lực lập tức, nghĩa Label hiển thị trở lại với trị số property Đó method Property có code bảo Label redisplay Ngược lại, ta dùng property X Object myBox, ta đọc trị số mà cịn execute method Property Get X Nói tóm lại, Property cho ta hội để execute method User đọc hay viết trị số variable Thí dụ ta muốn kiểm sốt để chấp nhận trị số tọa độ X số âm Ta sửa Property Let X lại sau: T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II Public Property Let X(ByVal vValue As Integer) If (vValue >= 0) Then mX = vValue End If End Property Property Read Only hay Write Only Nếu muốn Property Read Only ta khơng cung cấp Property Let Nếu muốn Property Write Only ta khơng cung cấp Property Get Ngoài làm việc với Object, thay Data type thơng thường, ta phải dùng Property Set, thay Property Let Thí dụ ta cho clsBox Property mới, gọi Font dùng object class stdFont VB6 Trong clsBox ta declare Private variable mFont viết Property Set Font sau: Private mFont As StdFont Public Property Set Font(ByVal newFont As StdFont) Set mFont = newFont End Property Ta dùng property Font myBox (thuộc Class clsBox) sau: ' Declare an object of Class StdFont of VB6 Dim myFont As StdFont Set myFont = New StdFont myFont.Name = "Arial" myFont.Bold = True Dim myBox As clsBox Set myBox = New clsBox Set myBox.Font = myFont ' Call the Property Set method Class clsBox có hai Public Subs, DrawBox ClearBox ClearBox vẽ box DrawBox, dùng BackColor ảnh (canvas), nên coi xóa box có sẵn Do đó, muốn, bạn sửa Sub DrawBox lại chút để nhận Optional draw color sau: Public Sub DrawBox(Canvas As Object, Optional fColor As Long) If IsMissing(fColor) Then Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B Else Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B End If End Sub T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II Trong thí dụ trên, Optional parameter fColor tested function IsMissing Nếu fColor BackColor canvas ta có hiệu ClearBox Trong form chương trình dùng để test clsBox, ta refer đến object thuộc class clsBox, IDE Intellisense hiển thị Properties Subs/Functions clsBox hình đây: Trong chương trình nầy, ta click nút Draw Box instantiate, cho tọa độ X,Y kích thước Width, Height, vẽ form Chữ Me code nói đến form frmClass T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 10 Để cho chương trình thú vị hơn, user clicks nút Animate, ta cho box màu đỏ chạy từ trái qua phải Khi user clicks nút Two Boxes ta vẽ hai boxes, hộp màu xanh, hộp màu đỏ, cho chúng chạy từ trái sang phải Ở ta biểu diễn cho thấy muốn instantiate boxes từ clsBox được, dĩ nhiên box có properties với giá trị riêng Ta lập trình Object báo cáo program chủ có biến cố (Event) xãy bên Class Ta thử declare Event tên Draw clsBox, viết code để Sub DrawBox executes Class Raise event Draw Public Event Draw(X As Integer, Y As Integer) Public Sub DrawBox(Canvas As Object, Optional fColor As Long) If IsMissing(fColor) Then Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B Else Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B End If RaiseEvent Draw(mX, mY) End Sub T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 53 CommonDialog1.HelpCommand = cdlHelpContents CommonDialog1.ShowHelp End Sub Để biết thêm chi tiết cách dùng ShowHelp, highlight chữ HelpContext source code VB6 ấn phím F1 chọn MsComDlg Custom Dialogs Nhiều Message Box, Input Box hay dạng Common Dialogs khơng thích hợp cho hồn cảnh lập trình Trong trường hợp bạn dùng Form bình thường để làm thành Dialog nhà, vườn Nó cơng chút, thứ có màu sắc giống Forms khác chương trình, thứ hai ta muốn làm tùy ý Chỉ có bất lợi chương trình dùng nhiều tài nguyên hơn, nói thẳng cần thêm memory Sau ta thử triển khai Login Form tổng quát, dùng nhiều trường hợp Khi khởi động, program nầy hiển thị Login form yêu cầu user đánh vào tên mật Sau đó, tên mật hợp lệ Form program Cách ta thực cho program khởi động với Sub Main BAS Module Sub Main gọi Sub GetUserInfo (cũng nằm Module) để hiển thị form frmLogin Modal mode để làm việc cách Message Box, Input Box hay Common Dialogs Khi form frmLogin dấu kín statement Me.Hide execution Sub GetUserInfo tiếp tục để chi tiết điền vào textboxes txtUserName txtPassword trả local variables strUserName strPassword Mã nguồn Sub Main Sub GetUserInfo liệt đây: Sub Main() Dim strUserName As String Dim strPassword As String ' Call local Sub getUserInfo to obtain UserName and Password GetUserInfo strUserName, strPassword If strUserName = "" Then MsgBox "Login failed or aborted", vbInformation, "login Aborted" Else T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 54 MsgBox "User " & strUserName & " logged in with password " & strPassword, vbInformation, "Login accepted" ' Check UserName and Password here ' If valid password then show the Main form of the program which is implemented separately ' frmMain.Show End If End Sub Private Sub GetUserInfo(ByRef sUserName As String, ByRef sPassword As String) ' Invoke frmLogin form in Modal mode frmLogin.Show vbModal ' As soon as frmLogin is hidden, the execution gets here sUserName = frmLogin.txtUserName ' assign the form's txtUserName to sUserName sPassword = frmLogin.txtPassword ' assign the form's txtPassword to sPassword Unload frmLogin ' Unload form frmLogin End Sub Login form hiển thị đây: Sau user điền chi tiết click OK, tạm thời ta hiển thị thông điệp để xác nhận chi tiết Trong tương lai, bạn viết thêm code để kiểm tra xem tên mật có hiệu lực khơng Có vài chi tiết form frmLogin để làm việc giống giống Common Dialog: • Ta cho property BorderStyle frmLogin Fixed Dialog T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 55 • Ta cho Property PasswordChar textbox txtPassword "*" để user điền mật khẩu, ta thấy hàng dấu hoa thị • Ta cho Property CenterScreen • Property Default button cmdOK True để user ấn phím Enter form coi tương đương với click button cmdOK • Tương tợ thế, Property Cancel button cmdCancel True để user ấn phím Esc form coi tương đương với click button cmdCancel StartupPosition form Tạm thời coding event click cmdOK cmdCancel đơn giản liệt kê đây: Private Sub CmdCancel_Click() ' Clear txtUserName and txtPassword txtUserName = "" txtPassword = "" ' Hide the Form to get out of Modal mode Me.Hide End Sub Private Sub CmdOK_Click() ' Hide the Form to get out of Modal mode Me.Hide End Sub T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 56 Chương Năm - Dùng Đồ Họa (Phần I) Tục ngữ Anh có câu: "Một hình ảnh đáng giá ngàn chữ (a picture is worth a thousand words)", ý nói ta dùng hình ảnh để diễn tả giúp người xem hiểu nhanh ta có nói thơi Visual Basic có cho ta số phương tiện đồ họa (graphics) để trang điểm cho cửa sổ phong phú, thân thiện, dễ làm việc với, thú vị Dù phương tiện đồ thị nầy không nhanh đủ cho ta viết chương trình trị chơi (games) tương đối đủ khả để đáp ứng nhu cầu cần thiết thông thường Khi nói đến đồ họa, ta muốn phân biệt với Text thơng thường Thí dụ ta dùng Notepad để edit thơ cửa sổ Trong lúc thơ hiển thị ta sửa đổi dễ dàng cách dùng bàn phím để đánh thêm chữ vào, dùng nút Delete, Backspace để xóa chữ Đó ta làm việc với Text Bây giờ, thơ hiển thị, ta dùng chương trình Graphic PhotoImpact Capture ULead để chụp hình cửa sổ thơ (active window) thành giống photo, ta có Graphic Sau đó, muốn sửa đổi thơ từ graphic nầy ta phải dùng graphic editor MSPaint, PaintShopPro,.v.v Các chữ hình có dạng graphic ta thấy photo, nên muốn edit phải dùng cọ với màu sơn Dưới graphic cửa sổ Notepad sau thêm chữ g dấu chấm hỏi cuối cách dùng MSPaint T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 57 Màu (color) độ mịn (resolution) Ta nói hình tốt có màu sắc sảo rõ ràng Bạn có cịn nhớ ngày Lễ khai mạc Thế Vận Hội Moscow, người ta cho hiển thị nhiều hình hay cách nhờ khán giả, khu hình chữ nhật, người cầm đưa lên cạt-tông màu Hàng ngàn cạt-tơng đưa lên ráp lại thành hình tuyệt đẹp Một graphic Windows gồm có nhiều đóm nhỏ, đóm, gọi pixel, có khả nằng hiển thị 16, 256, màu khác Độ mịn (resolution) Thông thường độ mịn (resolution) ảnh ta dùng 800x600, tức chiều ngang có 800 pixels chiều cao có 600 pixels Sau nầy, để xem hình rõ ta cịn dùng độ mịn 1028x768 với cạt SuperVGA Monitor tốt Ta nói cạt SuperVGA có đến 2MB RAM, phải cần đến 2MB để hiển thị graphic đẹp? Nếu màu pixel biểu diễn byte kiện với byte ta chứa số từ đến 255 Người ta đồng ý với theo quy ước số tượng trưng cho màu đen, số 255 tượng trưng cho màu trắng chẳng hạn Nếu độ mịn ảnh 1024x768 ta cần 1024x768=786432 bytes, tức gần 0,8 MB Một byte có bits Đơi ta nghe nói 16 bit color, ý nói thay byte, người ta dùng đến bytes cho pixel Như pixel nầy có khả hiển thị 216 = 65536 màu khác Muốn dùng 16 bit color T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 58 cho SuperVGA, ta cần phải có 1024x768x2 =1572864 bytes, tức gần 1,6 MB Đó lý ta cần 2MB RAM Lưu ý RAM VGA (Vector Graphic Adapter) card khơng liên hệ với RAM nhớ computer Không ngờ cụ Ăng-Lê biết Tin Học nên nói trước:"Một hình ảnh đáng giá ngàn chữ" Chữ word thời IBM gồm có bytes, nên ảnh đáng giá 400 ngàn chữ, cụ khơng xác lắm, coi Nên nhớ graphic hiển thị hai ảnh có độ mịn, thí dụ 800x600, kích thước khác nhau, thí dụ 14 inches 17 inches, dĩ nhiên hình ảnh 17 inches lớn hơn, có số pixels, có điều pixel lớn pixel ảnh 14 inches Nói cách khác, ta dùng ảnh lớn graphic lớn khơng có nghĩa rõ Muốn thấy rõ chi tiết, ta phải làm cho graphic có độ mịn cao Trở lại câu chuyện Thế Vận Hội Moscow, muốn có hình rõ hơn, diện tích, ta phải nhờ bà ngồi xích lại gần để khoảng đất chứa nhiều người người cầm cạt-tông nhỏ Ta thay đổi Display Properties ảnh cách right click lên desktop select Properties, kế click Tab Settings chọn Screen resolution Color quality giống hình đây: T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 59 Khi ta tăng độ mịn ảnh, hình ảnh nhỏ lại kích thước pixel thu nhỏ lại Do đó, ta cho hiển thị nhiều thứ desktop Phẩm chất graphic không thay đổi, hình nhỏ Nhớ muốn hình rõ cấu tạo chứa graphic, ta phải dùng độ mịn cao Giống chụp hình, muốn hình đẹp ta cần máy chụp hình dùng phim lớn thợ chuyên nghiệp focus kỹ lưỡng, thay dùng máy rẽ tiền tự động, đưa lên bấm chụp Màu (color) Khi ta dùng có bit (chỉ có trị số hay 1) cho pixel ta có trắng hay đen Lúc ta dùng byte (8 bits) cho pixels Dầu vậy, độ mịn graphic cao đủ, hình đẹp Thử xem tuyệt tác photos trắng đen Cao Đàm, Cao Lĩnh biết Các máy Fax dùng nguyên tắc scan hình giấy cở A4 thành pixels trắng đen gởi qua đường dây điện thoại qua đầu để tái tạo lại hình từ kiện pixels T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 60 Visual Basic cho ta định số vào màu VB hiển thị, hay chọn trực tiếp màu từ Dialog Có bốn cách: • Bạn định trực tiếp số hay chọn màu từ Palette • Bạn chọn số định nghĩa sẵn VB, gọi intrinsic color constants (intrinsic có nghĩa nơm na nhà vườn hay in-built), chẳng hạn vbRed , vbBlue Danh sách intrinsic color constants lấy từ VB6 online help liệt kê đây: T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II • 61 Dùng Function QBColor để chọn 16 màu Function QBColor xuất phát từ thời Quick Basic (QBasic) Microsoft QBsic tiền thân Visual Basic Trong QBasic bạn dùng số 1,2,3 để định màu Blue, Green, Cyan , v.v Function QBColor giản tiện hóa cách dùng màu, user khơng cần phải bận tâm cách trộn ba thứ màu Red, Green, Blue Bạn viết code cách đơn giản như: Dưới trị số màu ta dùng với Function QBColor Trị số Màu Black Blue Green 10 Cyan 11 Red 12 Magenta 13 Yellow 14 White 15 • Trị số Màu Gray Light Blue Light Green Light Cyan Light Red Light Magenta Light Yellow Bright White Dùng Function RGB để trộn ba màu Red, Green Blue Trong bảng liệt kê intrinsic color constants phía trên, để ý bạn thấy vbWhite(0xFFFFFF) tổng số vbRed(0x0000FF), vbGreen(0x00FF00) vbBlue(0xFF0000) Một màu biểu diễn pha trộn ba thành phần màu bản, màu byte có trị số từ đến 255 không dùng màu ấy, 255 dùng tối đa màu Hệ thống số ta dùng ngày Thập Phân Trị số 0xFF vbRed số 255 viết dạng Thập lục phân (Hexadecimal hay Hex cho gọn đánh dấu 0x trước số để phân biệt với số Thập phân) Trong hệ thống số Hex ta đếm từ đến A,B,C,D,E,F qua số hàng thập lục 10, 11, , 19, 1A, 1B, 1E,1F,20,21 v.v Tức thay dùng T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 62 10 symbols từ đến Thập phân, ta dùng 16 symbols từ đến F Muốn biết thêm hệ thống số Hex đọc Cơ số Nhị Phân Trong hình thí dụ cho thấy màu xanh nhạt chọn gồm ba thành phần Blue(0x990000= 153*256*256), Green(0xCC00= 204*256) Red(0xFF= 255): Ghi chú: Bạn dùng Windows Calculator để hốn chuyển số dạng Decimal, Binary Hexadecimal Chọn View|Scientific thay View|Standard T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 63 Function RGB Để áp dụng Function RGB, ta viết chương trình VB6 Bạn khởi động chương trình VB6 mới, bỏ vào Label tên Label1 với Caption Red Vertical Scroll tên VScroll1 Kế select hai Label1 VScroll1 Copy Paste hai lần để thêm hai cặp Đổi Caption hai Label nầy Green Blue Bây ta có Array ba Vertical Scrolls tên VScroll1, với index 0,1 Đặt PictureBox tên picColor vào bên phải ba VScrolls Thêm Label phía dưới, đặt tên lblRGBValue, nhớ clear caption nó, đừng có để chữ Label1 đây: Bây select ba VScrolls edit value property Max cửa sổ Properties thành 255, ý nói kéo bar VScroll1 lên xuống ta giới hạn trị số từ Min đến Max 255 T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 64 Chuyện ta phải làm viết code để xử lý Event Change VScrolls Vì chúng Array nên ta dùng Sub để handle events đến từ ba VScrolls Mỗi lúc VScrolls thay đổi trị số ta trộn ba màu Red, Green, Blue biểu diễn trị số VScrolls thành màu BackColor PictureBox picColor Đồng thời ta cho hiển thị trị số ba thành phần màu Red, Green Blue Label lblRGBValue Bạn double click lên VScrolls viết code sau: Private Sub VScroll1_Change(Index As Integer) ' Use Function RGB to mix colors VScroll1(0) for Red, ' VScroll1(1) for Green and VScroll1(2) for Blue ' and assign the result to BackColor of PictureBox picColor picColor.BackColor = RGB(VScroll1(0).Value, VScroll1(1).Value, VScroll1(2).Value) ' Variable used to prepare display string Dim strRGB As String ' Description of what is displayed strRGB = "picColor.BackColor = RGB(Red, Green, Blue) " & vbCrLf ' Values of Red, Green, Blue in Decimal strRGB = strRGB & " Decimal: " & VScroll1(0).Value & ", " & VScroll1(1).Value & ", " & VScroll1(2).Value & vbCrLf ' Values of Red, Green, Blue in Hexadecimal strRGB = strRGB & " Hex: 0x" & Hex(VScroll1(0).Value) & ", 0x" & Hex(VScroll1(1).Value) & ", 0x" & Hex(VScroll1(2).Value) ' Assign the resultant string to caption of Label lblRGBValue lblRGBValue.Caption = strRGB End Sub T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 65 Bạn khởi động chương trình nắm bar VScrolls kéo lên, kéo xuống để xem kết Cửa sổ chương trình có dạng giống đây: Color Mapping Nếu dùng Hex Calculator đổi số 0xFFFFFF decimal ta 16777215, kể số ta có tổng cộng 16777216 màu Lúc ta bàn 8bit (1 byte) 16bit (2 bytes) color, ta nói chuyện byte color Như ảnh khơng đủ khả để cung cấp màu mà Function RGB tính Vậy VGA card làm sao? Thí dụ cạt VGA hổ trợ đến bits Nó cung cấp 256 màu khác Nếu Function RGB đói hỏi màu mà VGA card cung cấp xác tốt, khơng tìm cách dùng hai hay ba đóm gần để trộn màu cho ta ảo tưởng màu ta muốn Công tác nầy gọi Color Mapping màu làm gọi custom color Dùng Intrinsic Color Constants T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 66 Một features MSWindows cho ta chọn Color Scheme Windows theo sở thích Bình thường, Color Scheme Windows Blue, ta chọn Olive Green hay Silver, ta muốn Chỉ khổ ta dùng màu đỏ đậm để hiển thị tuyệt đẹp thứ chương trình VB6 mà user tự nhiên thay đổi Color Scheme thành Olive Green chẳng hạn khiến cho màu đỏ đậm coi chẳng giống Color Scheme Để tránh trường hợp ấy, thay nói thẳng màu (xanh hay đỏ) ta nói dùng màu vbActiveTitlebar hay vbDesktop, v.v Dùng Intrinsic Color Constant bảo đảm màu ta dùng biến đổi theo Color Scheme mà user chọn để khỏi bị trường hợp màu trở nên chẳng giống Lúc thiết kế, ta chọn Intrinsic Color Constant từ Tab System chọn màu T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 67 Graphic files Khi hình Graphic lưu trử theo dạng số pixels với màu chúng nói ta gọi Bit Map tên file disk có extension BMP thí dụ House.bmp Lưu trử kiểu nầy cần nhiều memory bất tiện để gởi hay hiển thị trang Web Do người ta dùng kỹ thuật để giảm thiểu lượng memory cần để chứa graphic giữ chất lượng hình ảnh Có hai dạng Graphic files thông dụng Web, mang tên với extensions JPG GIF Đặc biệt với GIF files ta chứa hoạt họa (animation), tức GIF file chứa nhiều hình (gọi Frames) để chúng thay hiển thị, cho người xem có cảm tưởng vật di động ... List1.ListIndex Ta thêm item vào listbox cách T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II gọi method AddItem List1, v.v Nói cho ra, Object thực thể Class Nếu Listbox Class List1, List2 thực thể Listbox... ta cịn cho User dùng Shortcut menuItem Để cho MenuItem Shortcut, bạn chọn cho Shortcut t? ?? ComboBox Shortcut Menu Editor Trong h? ?nh ta chọn Ctrl+O cho mnuOpen T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN. .. code T Ự H ỌC VISUAL BASIC 6.0 - PH ẦN II 17 Như không thi? ?t bạn ph? ??i vi? ?t nhiều Comment có điểm khác thường, bí hiểm bạn cần thơng báo giải thích bạn làm cách Có thể sau nầy ta khám ph? ? đoạn