Chapter 4 : Building ActiveX Control
ActiveX Control là một object trong ứng dụng, được viết dưới dạng *.ocx và bộ phận này đặt trong form và nối liền với những ứng dụng khác như Visual basic application, Microsoft Office documents (Word, Exel...), Web pages trình bày bởi Internet Explorer. Hãy xem khi các bạn xử dụng ActiveX Control, bạn sẽ có những lợi ích gì ?
Chương
4 _Phần 1 _Ðoạn 1 : Giới thiệu về Controls
Activex Controls là bộ phận
được xử dụng nhiều lần, bao gồm
visual elements và code.
Control Classes : Controls được hoán
chuyển thành file dưới dạng *.ocx và các bạn
sẽ đặt *.ocx file này vào trong form của ứng
dụng. Bước này chúng
ta gọi là design-time instance, khi người xử dụng
cho form này chạy thì bộ phận ActiveX sẽ hoạt
động, bước này gọi là run-time instance.
Sau đây là hình ảnh trình bày về Control class và
những bộ phận có liên quan với nó :

Project files : Source codes và property value được giử dưới dạng *.ctl (text file) và đi chung với *.frm (form file). Graphical elements được giử dưới dạng *.ctx và đi chung với *.frx . Tất cả các files trên không thể thiếu khi hoán chuyển thành dạng ứng dụng, vì thiếu chúng, các bạn sẽ gặp trở ngại. Sau đây là hình ảnh cho thấy một ActiveX bao gồm những gì ...

Chương
4_Phần 1_Ðoạn 2 : Cách tạo thành một ActiveX Control
Tuần tự chúng ta có 7 bước để
tạo thành một ActiveX Control:
Mở một ActiveX Control project, giống như hình
ảnh như sau
Thêm vào user interface cho nó, chẳng hạn như
textbox, command button...
Xếp đặt properties và methods cho control
đó.
Viết event procedure cho control đó, những
tiết mục mà nó sẽ biểu diển, thí dụ như
một clock control sẽ được xử dụng trên web page
Hoàn thành Events và các tiết mục sẳn
sàng biểu diển khi gọi đến, thí dụ như tạo
thành một clock control như sau
Tạo thành property pages cho Control
Ðiều chỉnh và chạy thử Control, bằng
cách cho form mà có chứa control là start up project
Chương
4_Phần1 _Ðoạn 3 : Adding Constituent Controls
Một ActiveX Control bao gồm 2 bộ
phận : UserControl object và Constituent Control.
UserControl Object : Ðậy là bộ phận căn bản để tạo thành ActiveX Control. UserControl Object gồm có code modules và visual designer như chúng ta đã nói ở phần trên. Khi chúng ta mở bộ phận UserControl object thì bộ phận này được trình bày trong Visual Designer Window. Các bạn cũng có thể xử dụng Visual Designer Window Property để thêm vào Constituent Control (Tổ hợp các control phụ trong ActiveX Control mà đã được đặt trong Form). Sau đây là hình ảnh cho thấy UserControl Visual Designer với các hàng code đi chung với nó :

Constituent Control : Nói cách khác là một instance của một bộ phận mà đã được đặt vào trong Form. Một khi mà bạn cho vào trong Form một ActiveX Control, thì cùng một lúc các instance của UserControl Object cũng được hình thành và hổ trợ cho nhau. Sau đây là hình ảnh cho thấy một UserControl Object cùng với các tổ hợp (constituent) của nó :

Khi các bạn xử dụng các ActiveX Control
không có trong tiêu chuẩn của Visual Basic, các bạn
cần phải có sự đồng ý của người
làm ra ActiveX Control đó.
Chương
4_Phần 1_Ðoạn 4 : User Control events
ActiveX Control là bộ phận chạy trên Form hoặc là những thể loại chứa đựng Control khác như Frame...ngoại trừ OLE object...cho nên những events (tiết mục mà nó sẽ biểu diển hay nói cách khác là những công việc sẽ được tiến hành) có phần khác biệt với những control events đặt trên tiêu chuẩn *.exe form. Khi các bạn làm một Control cho ứng dụng của mình thì UserControl object sẽ làm việc như một bản sao (blueprint). Và bản sao này đặt vào trong Form thì instance của Control đó cũng đồng thời được dựng nên để mà hổ trợ cho nhau. Những việc đó làm xong rồi thì các tiết mục sẽ được biểu diển. Visual Basic xử dụng từ Event là từ ý nghĩa đó. Có phải là trước khi biểu diển các bạn phải chuẩn bị sân khấu hay không ? Có sân khấu rồi thì các diển viên đã sẳn sàng chưa ? Khi diển viên biểu diển thì âm thanh và ánh sáng đã sẳn sàng chưa ?...
Và trong UserControl event cũng tiến hành tương tự
như vậy, control đã được đặt vào trong
Form hay các Container khác hay chưa ? Instance của Control đó
đã hình thành với các chức năng riêng biệt cho
nó chưa? Kho nbu liệu
đã sẳn sàng đáp ứng các tài liệu mà bạn
muốn không ?...Một event quan trọng là initialize, nó
kiểm duyệt ứng dụng của các bạn đã
đáp ứng đúng các yêu cầu mà control sẽ làm cho
các bạn hay chưa ? Chúng
tôi sẽ trình bày cùng các bạn các event quan trọng trong
UserControl sau đây :
|
User
action |
Type of Control instance |
Events |
|
Ðặt control vào trong Form |
Design-time instance được hình thành |
Initialize InitProperties Resize Paint |
|
Cho ứng dụng làm việc lúc Design-time |
Design-time instance bị loại bỏ,
run-time instance hình thành |
WriteProperties (if needed) Terminate Initialize Resize ReadProperties Paint |
|
Rời bỏ ứng dụng có chứa
đựng Control trở về design mode |
Run-time instance bị loại bỏ,
design-time instance hình thành trở lại. |
Terminate Initialize Resize ReadProperties Paint |
|
Ðóng lại form mà form đó có chứa
Control |
Design-time instance bị loại bỏ |
WriteProperties (if needed) Terminate |
|
Hoán chuyển ứng dụng thành các
dạng khác để có thể cho vay mượn |
Run-time instance hình thành |
Initialize ReadProperties Resize Paint |
Chương
4_Phần 1_Ðoạn 5 : Interacting with a Container Application
Bởi vì control object bản chất của
nó là đa tính, đa dạng, cho nên các bạn không
thể nào đoán trước được control mà
bạn sắp sửa xử dụng sẽ nằm trong
container nào ? và càng không thể biết control đó
biến dạng lớn nhỏ cở nào...Do đó, các
bạn khi sắp đặt control của mình vào bất
cứ container nào, đều phải để ý tới
bản chất chung quanh hay là ảnh hưởng chung quanh
giửa container và control. Visual
Basic 6 giúp bạn làm việc này bằng cách tạo
sẳn cho bạn một object gọi là Ambient properties (đặc
tính chung quanh giửa container và control phụ thuộc vào
nhau như thế nào ?). Cở
lớn nhỏ của control được Visual Basic điều
khiển bởi Resize event (chúng ta đã nói qua ở
phần trên).
Xử dụng Ambient Properties : Containers
cung cấp cho Ambient Properties một số đặc tính
để thích nghi với control, khi control đặt để
vào trong container. Thí dụ
như là BackColor property. Màu
sắc của Control có phù hợp với container hay không
?...
AmbientChanged Event : Tiết mục này
sẽ được biểu diển khi ambient property có
biến đổi. Vì nó
là một event, cho nên các bạn phải viết code và
argument (phần mà event phụ trách) của nó là PropertyName
để xác định propery nào thay đổi.
Ambient object : Bộ phận này giúp các
bạn đọc được các giá trị của
từng ambient property. Thí
dụ như những hàng code sau đây cho chúng ta thấy
cách xử dụng bộ phận Ambient trong AmbientChanged event
:
Private
Sub UserControl_AmbientChanged(PropertyName As String)
If PropertyName = "BackColor" Then
UserControl.BackColor = Ambient.BackColor
End If
End
Sub
Xếp đặt cho property sẳn sàng hoạt động (Enabled Property) : Bạn phải làm 2 việc. Thứ nhất là viết code, dùng Get và Let procedure. Thứ nhì là đổi Enabled procedure ID thành Enabled. Thí dụ như những hàng code sau đây :
Public
Property Get Enabled() As Boolean
Enabled = UserControl.Enabled
End
Property
Public
Property Let Enabled(ByVal NewValue As Boolean)
UserControl.Enabled = NewValue
PropertyChanged "Enabled"
End
Property
Hãy theo các bước sau đây, các bạn có thể đổi Enabled procedure ID thành Enabled:
Trên Tools menu chọn Procedure Attributes.
Trong Name textbox, chọn Enabled procedure.
Bấm trên Advanced để mở rộng Procedure Attributes
Trong Procedure ID box, chọn Enabled thì code và user interface hòa hợp cùng nhau.
Chương 4_Phần 1_Ðoạn 6 : Setting Display Characteristics of your Control
Xếp đặt sao cho Control của bạn hiện hữu trong ứng dụng : Visual Basic làm dùm cho bạn một số properties và một event để giúp các bạn sắp xếp Control của mình xuất hiện trên khung ảnh máy vi tính khi ứng dụng tiến hành. Trong số đó có BackStyle property. BackStyle property có trong UserControl object dùng để sắp xếp sự xuất hiện của Control. Tuy nhiên, các bạn sẽ gặp một số trở ngại nếu các bạn có Control chứa đựng những vấn đề sau đây :
Control của bạn chứa nhiều constituent controls khác.
Control của bạn chứa bitmap với lượng màu cao.
Control của bạn có Label với TrueType font và lượng chử cao.
Một phương pháp hữu hiệu khác là dấu đi Control và khiến nó xuất hiện trong quá trình tiến hành ứng dụng. Thí dụ như Timer control...Và muốn dấu nó đi, chúng ta sẽ không lấy làm khó khăn khi đổi InvisibleAtRuntime trong UserControl Object.
Một điều quan trọng nữa là : làm sao trình bày Control của mình khi user xử dụng ? Không dể dàng vì màn ảnh máy vi tính không những có nhiều cở không chưa đủ, user họ còn xếp đặt màn ảnh của họ lớn nhỏ nữa để thích nghi với yêu cầu làm việc của họ???...Nhưng các bạn không cần lo !!!...Vì Visual Basic làm cho bạn một event gọi là Resize event. Khi user xử dụng ứng dụng của bạn, với Resize event, họ sẽ không gặp trở ngại và chúng ta đở phiền phức. Sau đây là thí dụ về Resize event :
Private
Sub UserControl_Resize()
Const MinWide = 2000
If UserControl.ScaleWidth < MinWide Then
Text1.Width = 1000
Else
'Scale textbox to size of the UserControl.
Text1.Width = UserControl.ScaleWidth - Text1.Left
End If
End
Sub
Chương
4_Phần 1_ Ðoạn 7 : Customizing
your Control for the VB Environment
Sau khi các bạn đã tạo thành một ActiveX Control rồi thì để dể dàng cho những người khác trong nhóm viết ứng dụng xử dụng cái ActiveX control đó, có 2 chuyện chúng ta nên làm :
Thêm vào Control đó một About box nói khái quát về ActiveX control
Thêm About box vào ActiveX Control : Ðó là một property trong Properties Window. About box này sẽ trình bày khái quát về Công ty, chuyên nghiệp, chức năng của ActiveX control...Dưới đây là hình ảnh cho thấy About box property:
Theo các bước sau đây, các bạn sẽ thêm About box property vào trong control một cách dể dàng:
1. Mở một form và đặt tên là form About
2. Viết một Public procedure như sau :
Public
Sub ShowAbout()
frmAbout.Show
vbModal
Unload
frmAbout
Set frmAbout =
Nothing
End
Sub
3. Phân phối Pubilc procedure cho About box property :
a) Trên Tool menu, chọn procedure Attributes
b) Trong khung ảnh Procedure Attributes, chọn procedure mà nó trình bày About box, rồi bấm trên Advanced
c) Trong danh sách Procedure ID, chọn About box, rồi bấm trên OK
Dùng Bitmap tượng trưng cho ActiveX control trong toolbox : Trong UserControl object, có một property là ToolboxBitmap, property này giúp các bạn thêm bitmap vào trong toolbox. Khi hoàn thành, các bạn sẽ có một bitmap xuất hiện trong toolbox như sau:
(...còn tiếp...mời Quí
vị xem trang kế tiếp ...)
|
Vovisoft © 2000. All rights reserved. | ||||
|
Last Updated: 21 Jun 2007 |
||||