Logo of VovisoftMastering Visual Basic 6

Chương 4 _Phần 4_ Ðoạn 2 : Creating the Property Page Interface Manually

          Các bạn cũng có thể thêm property page vào trong ActiveX Control của mình bằng phương pháp bước từng bước một như sau:

  1. Trên Project menu, click Add Property Page

  2. Trên New tab (bản New và bản Existing property page), bấm 2 lần ở Property Page icon hay là bấm trên Open, tùy theo các bạn.  Và các bạn sẽ thấy property page xuất hiện giống như một cái form nhưng khác dạng.

  3. Thêm vào đó những control giống như form vậy.  Khi hoàn thành, các bạn sẽ thấy khung ảnh như sau:

 

Chương 4 _Phần 4 _ Ðoạn 3 : Implementing Property Page behavior

          Khi các bạn xử dụng Property Page Wizard để thêm Property Page vào trong Control mà mình đang sáng tạo, thì Wizard, đồng thời cũng thêm vào những hàng code để hòa hợp cùng với những objects trong container của Control.

          Khi người xử dụng xài property page từ Control của bạn, thì SelectionChanged event procedure xác định những tính chất từ property page trong Control của bạn mà vào trong Control mới mà người xử dụng thêm vào theo yêu cầu của họ.

          Tiếp theo là khi người xử dụng đóng Control lại, hay là bấm vào nút Apply, thì ApplyChanges event sẽ làm mới các tính chất của property cho ứng dụng hay Container của họ.  Tóm lại, đây là những vấn đề cần biết khi nói về Property Page : SelectedControls Collection, SelectionChanged event, Changed Property và ApplyChanges event.

          SelectedControls Collection : Nó chứa đựng tất cả những control có mặt trong Container mà chúng đươc người xử dụng lựa chọn.  Trong SelectionChanged event bạn phải xác định tính chất hay đặc điểm cho Control hoặc là để trống, bởi vì trong ApplyChanges event, bạn cần phải làm mới ngay lập tức các tính chất đã được chọn trong SelectedControl Collection.  Và đó là sự liên hệ giửa SelectedControl Collection và ApplyChanges event.

          SelectionChanged Event : Event này chỉ xảy ra khi Property Page được mở ra.  Ðây là thí dụ về sự biến đổi Interval trong Timer

Private Sub PropertyPage_SelectionChanged()

       txtTimeInterval.Text = SelectedControls(0).Interval

End Sub

          Changed Property : Bạn cần phải thông báo cho Visual basic biết rằng tính chất của Control sẽ thay đổi. Trong Changed property của PropertyPage object, bạn phải xác định là True.  Và đồng thời nó cũng tạo khả năng cho nút Apply hữu hiệu sau này. Ðây là hàng code diển giải những công việc nhận định ở trên:

Private Sub txtTimeInterval_Change()

       PropertyPage.Changed = True

End Sub

          ApplyChanges Event : Event này chỉ tiến hành trong 3 trường hợp sau đây_ Khi nút OK bị bấm để đóng Property Page lại _ Khi nút Apply được bấm _ Khi một bản trong Property Page được chọn.  Thí dụ như hàng code nói về thay đổi interval của Control Timer như sau :

Private Sub PropertyPage_ApplyChanges()

       Dim objControl As Object

       For Each objControl In SelectedControls

              ' this code assumes all controls have an Interval property

              '  you should write code to handle different control types

              objControl.Interval = txtTimeInterval.Text

       Next

End Sub

 

Chương 4_Phần 4 _Ðoạn 4 : Establishing Property Pages Relationships

Khi các bạn xử dụng Property Pages Wizard để thêm vào trong Control những property pages thì tự nó tạo nên mối liên hệ giửa properties của Control và Property Page.  Wizard thêm vào nút Ellipsis (hình vuông có 3 dấu chấm) và hình thành một tổ hợp gồm có Custom Property page (Tính chất mà bạn xác định riêng cho Control của mình) và standard property page(Tính chất tiêu chuẩn có trong Visual Basic).  Nếu bạn thêm vào hơn 1 property page thì các nút OK, cancel, Apply cũng được hình thành.  Nhìn vào hình ảnh dưới đây, chúng ta sẽ thấy sự quan hệ giửa các property pages như thế nào ?

Custom Property Page

Custom Property Page và Standard Property Page

Associating a Property Page with a Property (Thành lập nhóm tổ hợp liên kết các đặc tính cho ActiveX control) :  Ðể nhìn thấy Property Page, bạn bấm vào nút Ellipsis, và theo các bước sau đây, các bạn sẽ dựng nên một nhóm tổ hợp

  1. Trên Tools menu, bấm trên Procedure Attributes, rồi bấm trên Advanced.

  2. Trong Name box, chọn property mà bạn muốn có quan hệ với Property Page

  3. Trong danh sách Use this Page in Property Browser, chọn Property Page, rồi bấm trên nút Apply hay OK

 

Chương 4 _Phần 5 : Creating a Databound Control

 

            Các bạn có thể làm một ActiveX Control mà trong đó, nó đã sắp đặt sẳn các chương trình  nhỏ như là nối liền với kho nhu liệu và kêu gọi các dử kiện chứa trong kho nhu liệu và đáp ứng đúng yêu cầu của bạn.  Còn gì thích thú cho bằng khi những chuyện đó, bạn chỉ cần làm một lần thôi và có thể xử dụng nhiều lúc nhiều nơi trong suốt quá trình hình thành ứng dụng.  Visual basic 6 giúp cho bạn làm việc này, bằng cách là bạn có thể gắn ActiveX Control vào một ADO Control khác đã có sẳn (hoặc do bạn làm nên _Custom_ hoặc có trong Visual Basic_Default).  ADO viết tắt cho ActiveX Data Object, xin xem lại chương 2, chúng tôi đã nói về ADO.

          Khi nói đến ADO, chúng ta sẽ nói đến 3 vấn đề cơ bản : Kho nhu liệu (Database_bất cứ loại nào SQL server, Access, Oracle...) Connection (làm thế nào để thông tin với kho nhu liệu, OLE DB chẳng hạn...) và command (loại nhu liệu nào ? cho những yêu cầu nào ?...)  Và thật là đơn giản, các bạn chỉ cần gắn ADO đó vào ActiveX Control thông qua tổ hợp Data-aware (Các loại nhu liệu liên hệ với nhau như thế nào ?) là các bạn có một ActiveX Control mới rồi.

          Chúng tôi sẽ lần lượt trình bày cùng các bạn làm thế nào để cung cấp các nhu liệu trong kho nhu liệu đúng theo yêu cầu của người xử dụng.

Chương 4_Phần 5 _ Ðoạn 1 : Making a Control Bindable

Mỗi một Data-bound (sự nối liền giửa ứng dụng của bạn và kho chứa Data) của ActiveX Control có thể có nhiều data-bound properties.  Và mỗi property có thể kêu gọi nhiều loại nhu liệu (data field) từ trong kho (Database).  Sự yêu cầu giao cho các nhu liệu từ trong kho đó gọi là DataBindings collection.  Do đó, trước khi có một Control Bindable, việc đầu tiên là bạn phải sếp đặt Data Field property, rồi mới đến DataBindings collection.  Hình ảnh dưới đây cho thấy làm sao để bạn cho phép Property trong control được nối liền với Data fields trong Database.

Theo các bước sau đây, các bạn sẽ có được DataBindings Collection

    1. Trên Tools menu, bấm trên Procedure Attributes

    2. Trong Procedure Attributes dialog box, bấm vào nút Advanced

    3. Cho mỗi một property mà bạn muốn trình bày như một DataField property, bạn phải:

        a. Chọn property trong danh sách Name list box

        b. Chọn Property is data boundThis property binds to DataField, cùng với các property khác.

    4. Và cho tất cả các property khác mà bạn muốn đánh dấu như bindable, bạn phải:

        a. Chọn property trong danh sách Name list box

        b. Tick vào trong Property is data bound check box, và chọn những fields cần thiết nhưng chừa ra phần This property binds to DataField

Chương 4_ Phần 5 _Ðoạn 2 : Updating Bound Properties  

          Khi bạn nối liền các property trong Control vào trong Data Source rồi, thì người xử dụng chỉ có thể đọc không mà thôi (read-only), không thể sửa đổi.  Bạn phải viết thêm code, thì control của bạn sẽ có hiệu quả là thay đổi nhu liệu được.  Quá trình đó, được tiến hành như sau :

          Xử dụng nhóm tổ hợp control gồm Property GetProperty Let -----> Gọi CanPropertyChange method -----> PropertyChanged method sẽ làm mới nhu liệu mà bạn muốn thay đổi.

          Thí dụ như bạn muốn thay đổi một data field gọi là Last Name trong Database (kho nhu liệu), thì sau đây là phương pháp để thực hiện chuyện đó:

          Public Property Get LastName() As String

                    LastName= txtLastName.Text

          End Property

          ‘Xác định chổ mà sẽ xảy ra sửa đổi

          Public Property Let LastName (ByVal NewLastName As String)

                    If CanPropertyChane(“LastName”) Then

                             txtLastName.Text = NewLastName

                    End If

                    ‘Gọi phương pháp CanPropertyChange

          End Property

          Private Sub txtLastName_Change()

                    PropertyChanged “LastName”

                    ‘Thay đổi Name field trong Database

          End Sub

 

Chương 4 _Phần 5 _Ðoạn 3 : Using the Data Repeater Control.

          Lợi ích của Data Repeater là các bạn không cần phải đưa vào trong form hay ứng dụng của mình cả một kho nhu liệu, nó sẽ chiếm chổ và memory trong system của bạn, hơn nữa, nó có khả năng làm trở ngại rất nhiều cho các bạn khi debugging và phát triển ứng dụng sau này.  Một điều nửa là thời gian load (thời gian chuẩn bị để ứng dụng sẳn sàng xử dụng) sẽ lâu hơn, nếu các bạn đưa cả kho nhu liệu vào trong ứng dụng nhiều lần.  Data Repeater giúp các bạn tránh những trở ngại đó.  Làm thế nào để có Data Repeater ?  Hãy theo các bước sau đây :

  1. Thành lập Data-Bound ActiveX control

  2. Soạn thảo dự án mới chứa đựng Data Repeater Control

  3. Thêm Data Repeater control và ADO Data control vào trong Tool Box

  4. Ðưa Data Repeater vào trong Form

  5. Ðưa ADO Data control vào trong form.  Xác định DataSourceName và mối liên hệ với kho giử nhu liệu.

  6. Xác định mối liên hệ giửa DataSource property của Data Repeater với ADO Data Control.

  7. Xác định RepeatedControlName property của Data Repeater Control trong ứng dụng.

  8. Thành lập sự nối liền giửa các Data fields trong kho nhu liệu và Data Repeater trong ứng dụng.

Và như vậy thì các bạn đã có Data Repeater control trong ứng dụng của mình rồi.

 

Chương 4 _Phần 5 _Ðoạn 4 : Kiểm tra Data Bound Controls

    Các bạn có thể kiểm tra ADO Data Control hay DataRepeater Control xem nó làm việc có hữu hiệu hay không?.

Kiểm tra DataField Property : Theo các bươc sau đây, các bạn có thể biết việc làm của mình có bị trở ngại hay không ?

  1. Thêm ADO Data Control vào trong Form, xác định DataSourceName và Source Property để việc giao trả nhu liệu có hiệu lực.

  2. Thêm ActiveX control của Bạn (Custom chẳng hạn) vào trong Form và xác định DataSource và DataField properties

  3. Cho Form hoạt động và kiểm soát các nhu liệu trong Control xem có đúng như yêu cầu hay không ?

    Nếu không trở ngại, các bạn sẽ thấy giống như hình ảnh sau đây :

Kiểm tra DataBindings collection : Theo các bước sau đây, các bạn sẽ biết Control của bạn có nối liền với kho giử nhu liệu hay không ?

  1. Lập lại bước 1 và 2 như ở trên.  Vào trong DataBindings Property và bấm trên nút ellipsis.  Chúng ta sẽ thấy những fields cần thiết trong kho nhu liệu.

  2. Cho Form hoạt động và kiểm soát các tài liệu.

 

Chương 4 _Phần 5 _Ðoạn 5 : Creating a Data Source Control

    Trong phần này chúng tôi sẽ trình bày cùng Quí Vị cách hình một Data Source Control một cách tổng quát từ tạo thành ActiveX control cho đến cách nối liền với kho nhu liệu và cách kiểm tra xem ActiveX control làm việc có hữu hiệu hay không.  Thông thường, chúng ta có thể theo những bước sau đây : Tạo thành một ActiveX Control, viết code cho ActiveX control để nó biết những chuyện mà nó sẽ làm, đặt ActiveX control vào trong ToolBox để những ứng dụng khác có thể xử dụng, kiểm tra ActiveX control xem nó làm việc có hữu hiệu hay không.  Mời các bạn cùng chúng tôi thành lập một ActiveX Control mà nó chứa Data Source.  Với Control này, các bạn sẽ xử dụng nó ở bất cứ đâu trong những ứng dụng khác mà các bạn không cần phải lập lại từ đầu những công việc phiền phức như nối liền, giới hạn nhu liệu...v.v...

 

    1._Thành lập một ActiveX Control bằng Template trong Visual Basic

    2._Ðặt tên cho ActiveX Control.  Trong Windows properties, xác định DataSourceBehavior là vbDataSource.

    3._Vào trong Project Menu, chọn references và đưa Microsoft ActiveX Data Objects 2.0 Library vào trong ứng dụng.

    4._Viết code cho ActiveX Control.  Trong Initialize event, viết những việc ActiveX control sẽ làm.

    5._Trong GetDataMember event, viết code mà những nhu liệu sẽ được chọn.

    6._Thêm vào Object interface vào trong Control.

    7._Viết code cho Object user interface đó (Thí dụ như command button).

    8._Thêm Standard Exe project vào trong nhóm Project.

    9._Thêm ActiveX Control mà các bạn vừa làm xong vào trong Form của Standard Exe.

    10._Thêm Object interface khác vào trong Form, chẳng hạn như TextBox.  Xác định properties cho Object interface đó.

    11._Kiểm tra ActiveX Control.

 

(...còn tiếp...mời Quí vị xem trang kế tiếp...)