Visual Basic Bách Khoa-Chương 4- Xây dựng ActiveX Control
Tham khảo tài liệu 'visual basic bách khoa-chương 4- xây dựng activex control', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Chương 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à designtime 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:
1. Mở một ActiveX Control project, giống như hình ảnh như sau
2. Thêm vào user interface cho nó, chẳng hạn như textbox, command button...
3. Xếp đặt properties và methods cho control đó.
4. 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
5. 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
6. Tạo thành property pages cho Control
7. Ð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 Events
instance
Ðặt control vào trong Form Designtime instance được Initialize
hình thành InitProperties
Resize
Paint
Cho ứng dụng làm việc lúc Designtime instance bị loại WriteProperties
Designtime bỏ, runtime instance hình (if needed)
Terminate
thành
Initialize
Resize
ReadProperties
Paint
Rời bỏ ứng dụng có chứa Runtime instance bị loại bỏ, Terminate
đựng Control trở về design designtime instance hình Initialize
Resize
mode thành trở lại.
ReadProperties
Paint
Ðóng lại form mà form đó có Designtime instance bị loại WriteProperties
chứa Control bỏ (if needed)
Terminate
Hoán chuyển ứng dụng Runtime instance hình Initialize
thành các dạng khác để có thành ReadProperties
Resize
thể cho vay mượn
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:
1. Trên Tools menu chọn Procedure Attributes.
2. Trong Name textbox, chọn Enabled procedure.
3. Bấm trên Advanced để mở rộng Procedure Attributes
4. 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 :
1. Thêm vào Control đó một About box nói khái quát về ActiveX control
2. Thêm vào một Bitmap để trình bày về ActiveX control đó trong Visual Basic
toolbox
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: