Tạo control dùng ActiveX Control Interface Wizard

Chia sẻ: Son Cung | Ngày: | Loại File: DOC | Số trang:9

0
240
lượt xem
62
download

Tạo control dùng ActiveX Control Interface Wizard

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Một số hướng dẫn tạo điều khiển sử dụng ActiveX dùng ngôn ngữ VB 6.

Chủ đề:
Lưu

Nội dung Text: Tạo control dùng ActiveX Control Interface Wizard

  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ẽ.        
  2. Ðặ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 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: 
  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: 
  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: 
  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: 
  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: 
  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
  8. bFound = True Exit For 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
  9. Ðoạn code trên sẽ tạo ra 300 item một cách ngẫu nhiên.  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 bộ tài khoản