1. Trang chủ
  2. » Công Nghệ Thông Tin

Tạo control dùng ActiveX Control Interface Wizard

9 300 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tạo Control Dùng ActiveX Control Interface Wizard
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Phần Mềm
Thể loại bài viết
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 9
Dung lượng 394 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tạo một control đơn giản dùng ActiveX Control Interface Wizard Tiếp theo bài Làm thế nào để tạo một OCX control trong VB?. Control này có đặc tính là khi bạn nhập một hay nhiều ký tự nó

Trang 1

Tạo một control đơn giản dùng ActiveX Control

Interface Wizard

Tiếp theo bài Làm thế nào để tạo một OCX control trong VB ?

Chúng ta hãy thử tạo một control đơn giản dùng ActiveX control Interface Wizard Ðây là một wizard giúp chúng ta thiết kế dễ dàng và nhanh chóng Control mà chúng

ta sẽ tạo ra là một ComboBox cải tiến từ ComboBox control có sẵn trong VB ta có thể đặt tên cho nó oai là "SuperComboBox" Control này có đặc tính là khi bạn nhập một hay nhiều ký tự nó sẽ tự động tìm kiếm trong danh sách (list property) item có các ký

tự đầu gần giống nhất và hiển thị dùm bạn lên ComboBox

Thiết kế "Supper ComboBox" control

Bạn hãy làm theo các bước sau:

1 Tạo ra một project mới thuộc loại ActiveX Control như hình vẽ

Ðặt tên cho control là "SupperComboBox" và vẽ một ComboBox lên control(giống như đang thiết kế trên form) đặt tên là cboCombo

2 Load ActiveX Control Wizard Addin bằng cách Click

Add-Ins->Add-Ins Manager ->VB6 ActiveX Ctl Interface

Trang 2

Wizard->Loaded như hình vẽ như sau:

Ðây là một Add-Ins giúp ta tạo ra phần lớn code cho các default methods hay properties

3 Chọn các Default Interface(tức Properties, Methods, Events) cho control bằng cách Click Add-Ins->ActiveX Control Interface Wizard như hình vẽ như sau:

Trang 3

Nếu như bạn sử dụng Add-Ins này lần đầu bạn sẽ thấy một window giải thích cũng như giới thiệu về những gì mà Add-Ins này làm được Click next sẽ được màn hình giống như trên Ở bước này bạn chọn những properties, methods hay events(gọi chung là Interface) nào mà bạn cho

là cần trong control của mình Cụ thể trong bài này chúng ta làm một ComboBox cải tiến do đó trước hết nó phải thừa kế hầu hết Interface của một Combo thường Do đó bạn phải liệt kê và tìm xem có bao nhiêu interface của combo thường mà mình cần rồi chọn vào danh sách bên phải.(Ví dụ như AddItem, ListIndex, List, ListCount, Text, ItemData Vì bài này chỉ mang tính hướng dẫn và giúp bạn có một khái niệm tạo một control dễ dàng như thế nào nên bạn không cần phải chọn tất cả

interface của ComboBox mà chỉ chọn vài cái tiêu biểu mà thôi.)

4 Click Next và tạo các Custom Interface cho control như hình vẽ như

sau:

Trang 4

Ðây là chỗ cho các bạn thêm các custom interface mà bạn muốn Ðó là những interface mà control nguyên thủy không có Cụ thể trong bài này

ta tạo thêm một Property tên là "LimitToList" Property này là một

Boolean Khi giá trị của nó là True thì người User chỉ có thể chọn các item trong List property của Combo mà không thể nhập một item mới được

5 Click Next và Mapping Interface cho control như hình vẽ như sau:

Trang 5

Trong bước này bạn sẽ map các interface của user control cho các control thành phần Cụ thể trong bài này là chúng ta sẽ cố gắng map hầu hết các interface của Supper ComboBox cho cboCombo Nói cho dễ hiểu là khi người user thay đổi giá trị các properties của

SupperComboBox thì nó chỉ việc "kêu" cboCombo làm thay(tiếng Anh gọi là Delegate!) Ðể map tất cả interface của SupperComboBox cho cboCombo bạn chỉ việc chọn tất cả(Sellect All) bằng cách chọn interface đầu tiên, giữ phím Shift và chọn interface cuối cùng, sau đó bạn chọn Control cboCombo như hình vẽ

6 Click Next và Set Attributes cho các Interface không map được ở bước

trên như hình vẽ như sau:

Trang 6

Sẽ có một số interface bạn không thể map được vào cboCombo vì interface đó không tồn tại trong cboCombo Thông thường đó là những Custom interface Bước này sẽ cho phép ta định nghĩa các custom interface như loại dữ liệu(data type) hay giá trị mặc định(default value)

và property có được phép đọc hay viết lúc Run Time hay lúc Design Time Cụ thể bài này ta chỉ định nghĩa LimitToList property là Boolean

và giá trị ban đầu là 0 như hình vẽ Các properties khác không quan trọng

7 Click Next và hoàn tất wizard như hình vẽ như sau:

Trang 7

Nếu bạn chuyển sang phần Code Window bạn sẽ thấy Add-Ins trên đã viết phần lớn code cho chúng ta như thế nào Bạn có thể cảm thấy

"ngán" khi nhìn thấy một "rừng" code mà nó đã tạo ra Nhưng nếu bạn quan sát kỹ sẽ thấy chúng tương tự như nhau mà thôi Bây giờ chúng ta

sẽ viết code đặt trưng cho SupperComboBox control

8 Chuyển sang phần viết code cho control và Copy and Paste đoạn code sau vào sau phần Declare variables

'True if FindItem is running

Private bFinding As Boolean

'Current cursor position within the text

Private lPos As Long

'Index value of the last item selected

Private lIndex As Long

Private Sub FindItem()

Dim lIdx As Long

Dim sText As String

Dim lLen As Long

Dim bFound As Boolean

bFinding = True

lPos = cboCombo.SelStart

sText = cboCombo.Text

lLen = Len(sText)

bFound = False

For lIdx = 0 To cboCombo.ListCount

If StrComp(sText, Left$(cboCombo.List(lIdx), lLen),

vbTextCompare) = 0 Then

cboCombo.ListIndex = lIdx

bFound = True

Exit For

Trang 8

End If

Next lIdx

If m_LimitToList And Not bFound Then

cboCombo.ListIndex = lIndex

If lIndex = -1 Then cboCombo.Text = ""

cboCombo.SelStart = lPos - 1

Else

cboCombo.SelStart = lPos

lIndex = cboCombo.ListIndex

End If

cboCombo.SelLength = Len(cboCombo.Text)

bFinding = False

End Sub

Private Sub cboCombo_Change()

If bFinding Then Exit Sub

If Len(cboCombo.Text) = 0 Then

lPos = 0

lIndex = -1

Else

FindItem

End If

End Sub

Cốt lõi của SupperComboBox là khi event _Change() xảy ra thì nó sẽ gọi FindItem tìm item nào có ký tự đầu tiên là những chữ mà user nhập vào và đặt sẵn lên Text property của combo Nếu LimitToList

True thì nó sẽ không cho user nhập các item không có trong list

Chạy thử chương trình

Ðể chạy thử chương trình và kiểm tra kết quả bạn cần có một standard Exe project

tạo thành một project group như sau Click Files->Add Project->Standard Exe

Double-Click vào Supper ComboBox control nằm trên ToolBox để đặt một ComboBox lên Form của bạn Sau đó chuyển sang phần viết code cho form và copy and paste đoạn code sau:

Private Sub Form_Load()

Dim Index As Long

Dim LenIndex As Long

Dim lLen As Long

Dim sText As String

For Index = 1 To 300

lLen = Rnd * 10 + 1

sText = ""

For LenIndex = 1 To lLen

sText = sText & Chr$(Rnd * 25 + 65)

Next LenIndex

SupperComboBox1.AddItem sText

Next Index

End Sub

Ðoạn code trên sẽ tạo ra 300 item một cách ngẫu nhiên

Trang 9

Trước khi chạy bạn Right-Click vào Test Project và chọn Set As Start Up Bây giờ

bạn hãy bấm F5 để chạy thử chương trình Thử nhập vào một vài ký tự trên

ComboBox bạn sẽ thấy kết quả như hình vẽ sau:

Như vậy bạn đã biết qua làm thế nào để tạo một user control trong VB bằng Wizard Phạm vi của bài này chỉ hướng dẫn bạn phần thực hành Phần giải thích chi tiết cũng như đi sâu vào nguyên tắc hoạt động của User Control sẽ được trình bày trong các bài sau

Bạn có thể download source code của program mẫu nầy

Bạn cũng có thể download SourceCode nguyên thủy và tương đối đầy đủ của nhà xuất bản Wrox tại đây

Ngày đăng: 18/10/2013, 13:15

HÌNH ẢNH LIÊN QUAN

1. Tạo ra một project mới thuộc loại ActiveX Control như hình vẽ. - Tạo control dùng ActiveX Control Interface Wizard
1. Tạo ra một project mới thuộc loại ActiveX Control như hình vẽ (Trang 1)
>Loaded như hình vẽ như sau: - Tạo control dùng ActiveX Control Interface Wizard
gt ;Loaded như hình vẽ như sau: (Trang 2)
4. Click Next và tạo các Custom Interface cho control như hình vẽ như sau:  - Tạo control dùng ActiveX Control Interface Wizard
4. Click Next và tạo các Custom Interface cho control như hình vẽ như sau: (Trang 3)
5. Click Next và Mapping Interface cho control như hình vẽ như sau:        - Tạo control dùng ActiveX Control Interface Wizard
5. Click Next và Mapping Interface cho control như hình vẽ như sau: (Trang 4)
7. Click Next và hoàn tất wizard như hình vẽ như sau:        - Tạo control dùng ActiveX Control Interface Wizard
7. Click Next và hoàn tất wizard như hình vẽ như sau: (Trang 6)

TỪ KHÓA LIÊN QUAN

w