Thông tin tài liệu:
RaiseEvent Draw(mvarX, mvarY) End Sub 3. Tìm thủ tục xử lý sự kiện Click của biểu mẫu. Tìm và xoá dòng lệnh tạo đối tượng A_Box và thêm một dòng vào phần General Declarations
Nội dung trích xuất từ tài liệu:
Giáo trình đào tạo Visual Basic_5 RaiseEvent Draw(mvarX, mvarY) End Sub 3. Tìm thủ tục xử lý sự kiện Click của biểu mẫu. Tìm và xoá dòng lệnh tạo đối tượng A_Box và thêm một dòng vào phần General Declarations: Private WithEvents A_Box As clsBox Private Sub Form_Click() Dim nIndex As Integer With A_Box .Y = 0 .Width = 1000 .Height = 1000 For nIndex = 0 To 1000 .DrawBox Me, Me.BackColor .X = nIndex .DrawBox Me Next End With End Sub 4. Thêm một dòng vào sự kiện Form_Load: Private Sub Form_Load() Set A_Box = New clsBox End Sub 5. Chọn A_Box từ danh sách trong cửa sổ Code. Chọn sự kiện Draw từ danh sách các sự kiện. 6. Trong sự kiện này, ta dùng lệnh Print để in ra toạ độ của hộp trong cửa sổ gỡ rối (hay còn gọi là cửa sổ Immediate) Private Sub A_Box_Draw(X As Integer, Y As Integer) Debug.Print The box just got drawn at & X & , & Y End Sub 7. Thi hành chương trình. Nhấn chuột trên biểu mẫu, ta thấy hộp trượt qua màn hình. Đồng thời trong cửa sổ Immediate, ta thấy các dòng văn bản hiển thị toạ độ hiện hành của hộp.Ở đây, ta dùng phương thức RaiseEvent để yêu cầu VB phát ra sự kiện Draw, vàtruyền 2 giá trị của 2 biến thuộc tính mvarX và mvarY chứa toạ độ (x, y) của hộpcho sự kiện Draw mới.Để có thể xử lý các sự kiện của một đối tượng tự tạo, ta cần khai báo đ ối t ượnghơi khác một chút. Trước hết, nó phải được khai báo là Private trong biểu mẫu(hoặc modul), thay vì là Private trong một thủ tục. Sau đó, ta phải dùng t ừWithEvents thay vì Dim:Private WithEvents A_Box As clsBoxTừ khóa WithEvents báo cho VB biết ta đang khai báo một đối tượng có sự ki ện, và ta dự định viết chương trình để xử lý những sự kiện này.Chú ý từ khoá New bị loại bỏ trong dòng lệnh WithEvents. Khi ta viết:Dim A_Box As New clsBoxNghĩa là không chỉ thông báo cho VB rằng ta sắp sử d ụng m ột đ ối t ượng d ựa theo lớp clsBox, ta còn yêu cầu VB cấp phát vùng nhớ cho đối tượng và t ạo nó. Tuy nhiên, do hạn chế của VB, điều này không được thực hiện với từ khoá WithEvents. Thay vào đó, ta phải tạo đối tượng riêng, bằng cách thêm dòng lệnh vào s ự ki ện Form_Load.Tóm lại, đối với sự kiện, ta cần nhớ: Khai báo sự kiện dùng Public Event. o Phát sự kiện dùng RaiseEvent o Tạo đối tượng với Dim WithEvents, không dùng New. o Tạo đối tượng như sau: o Set = New Viết chương trình để bắt sự kiện tương tự xử lý sự kiện của điều o khiển.10.1.5Huỷ đối tượngSau khi sử dụng một đối tượng và không c ần dừng n ữa, ta c ần hu ỷ nó đi. Đi ều này đặc biệt quan trọng khi ta sử dụng nhiều đối tượng trong ứng d ụng. N ếu không huỷ đối tượng, sự hao hụt vùng nhớ sẽ làm giảm khả năng hoạt động của ứng dụng. Ta dùng dòng lệnh sau: Set = NothingNơi lý tưởng để huỷ một đối tượng là trong sự kiện Unload của biểu mẫu.Ví dụ: Private Sub Form_Unload (Cancel As Integer) Set A_Box = Nothing End Sub10.2 Biến đối tượngCho đến bây giờ, ta chỉ tham chiếu đến điều khiển hay biểu mẫu thông qua tên tađặt cho chúng lúc thiết kế. Cách làm này chỉ phù hợp đối với các chương tình đ ơngiản. Đặt đối tượng vào biến và tham chiếu đến nó bằng tên bi ến cho phép ta s ửdụng cùng đoạn chương trình cho vô số các instance khác nhau của m ột kiểu đốitượng.Với biến đối tượng ta có thể: Tạo điều khiển mới trong lúc thi hành. o Copy điều khiển để sinh ra một instance mới của điêu khi ển hiện o hành. Tạo bản sao biểu mẫu cùng tên, cùng điều khiển và chương trình; o nhưng từng biểu mẫu chứa và xử lý những dữ liệu khác nhau – tương tự nhiều tài liệu trong ứng dụng của Word hay nhiều bảng tính trong Excel.Biến đối tượng cung cấp khả năng xây dựng các th ủ t ục t ổng quát đ ể x ử lý v ớinhững điều khiển nhất định. Ví dụ, một thủ tục kiểm tra dữ li ệu của h ộp văn bảnchỉ dùng trong trường hợp tên điều khiển được chỉ ra trong chương tình. Tuy nhiên,để thủ tục trở thành độc lập với điều khiển bất kỳ, ta xem điều khiển như m ộtbiến đối tượng.Dim NewEmployee As New cEmployee10.2.1Tạo điều khiển lúc thi hànhCách đơn giản nhất là tạo một mảng điều khiển vào lúc thi ết kế, sau đó, m ở r ộngmảng bằng chương trình lúc thi hành. Nếu ta định thuộc tính Index của điều khiểnđầu tiên là 0 lúc thiết kế, ta có thêm điều khi ển lúc thi hành. Đi ều khi ển t ạo lúc thihành có cùng tên, kiểu, và thủ tục xử lý sự kiện như điều khiển ban đầu.Tương tự biến mảng, ta có thể mở rộng hoặc rút gọn mảng đi ều khiển. Đi ểm khácnhau là ta không Redim mảng điều khiển như với biến mảng. Thay vào đó, ta phảiLoad bản instance mới của điều khiển vào mảng. Khi muốn xoá điều khiển, taUnload chúng. Ví dụ mẫu - T ...