Sử dụng ActiveX trong Visual Basic

Một phần của tài liệu Tài liệu hướng dẫn thực tập tốt nghiệp công nghệ thông tin (Trang 54 - 61)

CHƯƠNG I Công cụ lập trình

I.4. Sử dụng ActiveX trong Visual Basic

ActiveX là cơng nghệ cho phép người lập trình Windows có thể sử dụng các thành phần (component) do người khác phát tri ển để áp dụng trong chương trình của mình. Cơng

nghệ ActiveX cho phép người phát triển tận dụng được lao động của người khác, không

phải viết lại những chức năng thông dụng, tiết kiệm được rất nhiều sức lao động cũng như

làm tăng đáng kể sức mạnh của các chương trình (vì được phát triển chun mơn hóa). Tuy nhiên, mặt trái của việc sử dụng ActiveX là sự phức tạp khi cài đặt (rất hay xảy ra xung

đột version giữa phiên bản được cài đặt mới và phiên bản đã có sẵn trong máy tính). Ngồi

ra, tất cả các ActiveX của sinh viên sử dụng trong đồ án tốt nghiệp đều là những bản crack

(có nghĩa là sinh viên đang vi phạm pháp luật). Chúng tôi đưa ra hướng dẫn sử dụng các

ActiveX như là giải pháp tình thế, trong tương lai sẽ tìm kiếm các component hợp pháp từ

nguồn phần mềm miễn phí hoặc phần mềm nguồn mở hay các component do sinh viên

trong Khoa tự phát triển.

I.4.1. Các ActiveX thông dụng

I.4.1.1. CommonDialog

Các hộp thoại thông dụng trên Windows (H ộp thoại mở file, hộp thoại ghi file, hộp thoại

Để đưa ActiveX này vào trong project, click ph ải chu ột trên h ộp ToolBox, ch ọn

Components từ menu Popup. Trên h ộp thoại Components, đánh dấu vào mục "Microsoft

Common Dialog Controls".

Sau đó trên ToolBox, chọn đối tượng CommonDialog để đưa vào form, với đối tượng

này bạn có thể sử dụng để hiển thị các hộp thoại thông dụng của Windows.

' Visual Basic 6.0

' Uses a CommonDialog control.

CommonDialog1.InitDir = "C:\Program Files" CommonDialog1.ShowOpen

MsgBox CommonDialog1.FileName

Tên thuộc tính Kiểu Mô tả

DialogTitle String Tiêu đề của hộp thoại

FileName String Tên file được chọn (open hoặc save)

FileTitle String Tên file được chọn (không kèm theo đường dẫn)

InitDir String Thư mục ban đầu khi bật hộp thoại lên

MaxFileSize String Chiều dài lớn nhất cho phép lưu vào tên file (FileName)

Tên thao tác Mô tả

ShowColor Hiển thị hộp thoại chọn màu (theo giá tr ị RGB) hoặc chọn màu theo vị trí trên bảng

màu

ShowFont Hiển thị hộp thoại lựa chọn font chữ

ShowHelp Hiển thị hộp thoại trợ giúp

ShowOpen Hiển thị hộp thoại để lựa chọn file (mở file)

ShowPrinter Hiển thị hộp thoại lựa chọn máy in và các thông số của máy in

ShowSave Hiển thị hộp thoại Save as cho phép nhập vào tên file cần ghi

I.4.1.2. VSFlexGrid

Các ứng dụng trong ngành Tin học xây dựng thường liên quan rất nhiều đến bảng biểu. VB

có cung cấp Grid control cho phép làm việc với bảng biểu. Tuy nhiên, Grid control của VB

khơng có đầy đủ các tính năng cần thiết cho các ứng dụng Tin học Xây dựng, các bạn có thể sử dụng VSFlexGrid (http://www.componentone.com) để thực hiện các chức năng này. Với VSFlexGrid, có th ể thực hiện được rất nhiều chức năng: Đọc và lưu dữ liệu trên file

Text, Excel. Lưu trữ được một số lượng lớn các ô dữ liệu, cho phép cập nhật (edit)... Sau khi đã cài đặt VSFlexGrid, b ạn có th ể sử dụng bằng cách đưa thêm component

"ComponentOne VSFlexGrid 8.0 (Light)" vào trong ToolBox c ủa VB (các bước chi tiết ần CommonDialog). Chú ý rằng với phiên bản mới nhất của VSFlexGrid,

bạn có nhiều lựa chọn: Nếu ứng dụng kết nối CSDL, có th ể chọn bản OLEDB hoặc bản

DAO/RDO, nếu khơng thì chỉ cần sử dụng bản Light là đủ.

Sau đó, đưa VSFlexGrid control từ ToolBox vào form để sử dụng. Dưới đây là ví dụ với grid control có tên là "VSFlexGrid1", ch ương trình tạo ra bảng có 3 dịng và 3 c ột (kể cả

dịng và cột tiêu đề). Việc gán thơng tin vào grid ch ỉ đơn giản là gán giá trị vào thuộc tính

TextMatrix của control. Private Sub Form_Load() With VSFlexGrid1 .Rows = 3 .Cols = 3

.TextMatrix(0, 0) = "So TT" .TextMatrix(0, 1) = "Ho dem" .TextMatrix(0, 2) = "Ten" .TextMatrix(1, 0) = 1

.TextMatrix(1, 1) = "Nguyen Van" .TextMatrix(1, 2) = "A"

.TextMatrix(2, 0) = 2

.TextMatrix(2, 1) = "Tran Thi" .TextMatrix(2, 2) = "B"

.Editable = True End With

End Sub

Khi số lượng các ô lớn, việc gán dữ liệu vào từng ơ có thể gây chậm chương trình, bạn có

thể sử dụng phương pháp khác là kết nối grid với một mảng 2 chiều các giá trị bằng cách sử dụng thao tác BindToArray:

VSFlexGrid.BindToArray [ VariantArray As Variant ], [ RowDim As Long ], [ ColDim As Long ], [ PageDim As Long ], [ CurrentPage As Long ]

Với thao tác BindToArray, dữ liệu sẽ được đưa rất nhanh từ mảng vào grid (nhanh hơn

rất nhiều lần so với việc bạn gán từng giá trị cho từng ơ trong grid). Ngồi ra, n ếu dữ liệu được bind vào (từ mảng [A]), sau đó thay đổi các thơng số trong mảng [A], có thể sử dụng

Private Sub Command1_Click() Dim Dong(2, 2)

With VSFlexGrid1 .Rows = 3 .Cols = 3

Dong(0, 0) = "STT": Dong(0, 1) = "Ho dem": Dong(0, 2) = "Ten" Dong(1, 0) = "1": Dong(1, 1) = "Nguyen Van": Dong(1, 2) = "A" Dong(2, 0) = "2": Dong(2, 1) = "Nguyen Thi": Dong(2, 2) = "B" .BindToArray Dong .Refresh Dong(2, 1) = "aaa" .Refresh End With End Sub I.4.1.3. MenuXP

Menu tiếng Việt luôn là vấn đề đau đầu của rất nhiều bạn làm đồ án tốt nghiệp. Windows sử dụng chung một font chữ cho tất cả các menu hiển thị trên tất cả các cửa sổ. Để hiển thị

tiếng Việt có dấu, về nguyên tắc có 2 phương pháp

- Sử dụng tiếng Việt Unicode: Đây là gi ải pháp tr ọn vẹn nhất, tuy nhiên VB6 l ại

khơng hỗ trợ Unicode, do đó bạn không thể áp dụng giải pháp này

- Đổi font chữ dùng cho menu của Windows: Trên thực tế, bạn có thể sử dụng các hàm

API để thay đổi font chữ dùng cho menu của Windows. Tuy nhiên, giải pháp này

lại gây khó chịu rất nhiều cho người sử dụng khi font chữ quen thuộc trên menu của

họ bị thay đổi.

Giải pháp chúng tôi đưa ra ở đây không nằm trong 2 giải pháp kể trên: Để tạo menu tiếng

Việt chúng ta sử dụng một ActiveX là VBSmart Menu XP (VBSmartMenuXP.ocx). Thực chất ActiveX này không sử dụng menu cung cấp sẵn của Windows mà tự tạo một hệ thống

menu của riêng mình, chính vì vậy mà bạn có thể lựa chọn font chữ cho menu đó.

Để tạo menu tiếng Việt bằng VBSmartMenuXP, bạn hãy thao các bước sau

- Cài đặt VBSmartMenuXP

- Tạo mới một VB Project, trên Toolbox, click phải chuột chọn Components trên menu popup.

- Trên hộp thoại Components, check vào VB Smart Menu XP - Trên Toolbox, chọn SmartMenuXP , thêm control này vào form

- Tên mặc định của control là SmartMenuXP1, sửa thuộc tính Font của control thành

một font chữ tiếng Việt (mã TCVN3), ví dụ font VK Sans Serif (đối với font chữ cho menu, bạn nên s ử dụng các font bitmap, không nên s ử dụng font True Type nh ư

.VnArial, .VnTime).

- Phần code của form như sau (lưu ý rằng khi bạn dùng font chữ tiếng Việt nào thì mã tiếng Việt trong phần nhãn phải tương ứng, trong phần ví dụ này ta sử dụng mã tiếng

Việt TCVN3): Option Explicit

Private Sub Form_Load()

' Để thêm các menu vào SmartMenuXP1, sử dụng phương thức Add của MenuItems ' Phương thức Add có cú pháp như sau

' .MenuItems.Add parent, key, type, label, picture, keymask, keycode ' parent: tên của menu cha, nếu là menu gốc thì parent=0

' key: tên của menu, nên đặt dưới dạng gợi nhớ để dễ dàng truy cập ' type: kiểu của menu – smiNone là kiểu menu thường

' label: nhãn của menu, phần nội dung hiển thị trên menu ' picture: hình ảnh hiển thị trên menu

' keymask: phím chức năng (vbCtrlMask, vbAltMask, vbShiftMask) ' keycode: mã của phím kích hoạt menu

' nếu phím tắt là Ctrl+O: keymask = vbCtrlMask, keycode = vbKeyO With SmartMenuXP1

.MenuItems.Add 0, "mnuTepTin", smiNone, "&TÖp tin" .MenuItems.Add 0, "mnuSoanThao", smiNone, "&Soạn thảo"

.MenuItems.Add "mnuTepTin", "mnuTepTin_TaoMoi", smiNone, "&T¹o míi", , _ vbCtrlMask, vbKeyN

.MenuItems.Add "mnuTepTin", "mnuTepTin_Mo", smiNone, "&Më file", , _ vbCtrlMask, vbKeyO

.MenuItems.Add "mnuTepTin", "mnuTepTin_Dong", smiNone, _ "&Đóng tài liệu", , vbCtrlMask, vbKeyS .MenuItems.Add "mnuTepTin", , smiSeparator

.MenuItems.Add "mnuTepTin", "mnuTepTin_Thoat", smiNone, "&Tho¸t"

.MenuItems.Add "mnuSoanThao", "mnuSoanThao_Copy", smiNone, "&Copy", , _ vbCtrlMask, vbKeyC

.MenuItems.Add "mnuSoanThao", "mnuSoanThao_Cut", smiNone, "&Cut", , _ vbCtrlMask, vbKeyX

, vbCtrlMask, vbKeyV End With

End Sub

Private Sub SmartMenuXP1_Click(ByVal ID As Long) Select Case SmartMenuXP1.MenuItems.Key(ID) Case "mnuTepTin_TaoMoi"

MsgBox "Tao file moi" Case "mnuTepTin_Mo" MsgBox "Mo tai lieu" Case "mnuTepTin_Dong"

MsgBox "Dong tai lieu hien thoi" Case "mnuTepTin_Thoat" MsgBox "Exit..." Unload Me End Select End Sub I.4.1.4. MaXC

VB là ngơn ngữ dễ dùng, dễ học nhưng có nhược điểm lớn là chậm, nhất là đối với các ứng dụng có khối lượng tính tốn lớn. Để khắc phục nhược điểm này, người ta thường phát triển các module tính tốn ở các ngơn ngữ khác, rồi gọi bằng VB.

Các ứng dụng về Tin học Xây dựng thường thiên nhiều về tính tốn, nhất là bài tốn giải hệ

phương trình. Trong các đồ án tốt nghiệp trước, rất nhiều đồ án gặp phải vấn đề khi giải hệ

phương trình: Tốc độ chậm, sai số tính tốn lớn dẫn đến kết quả khơng chính xác. Chính vì

thế chúng tôi giới thiệu MaXC (Matrix ActiveX Component) cho phép th ực hiện rất nhiều

các phép toán trên ma tr ận cũng như giải hệ phương trình theo nhi ều phương pháp khác

nhau.

MaXC không s ử dụng control nh ư các ActiveX khác, b ạn cần khai báo đối tượng kiểu

Matrix (xem đoạn code minh họa bên dưới) Option Explicit

Dim a As New Matrix, b As New Matrix, c As Matrix Private Sub Form_Load()

' Matrix A will hold terms of the of the unknows x,y,z a.Size 3, 3

a.FillRandom 1, 5

' Matrix B will hold right-hand values b.Size 3, 1

b.FillRandom 1, 5 End Sub

Private Sub cmdSolve_Click()

' If system can not be solved an error will occur Set c = a.SolveGauss(b)

' Alternativly you can also use ' SolveGauss function

' Set C= A.SolveGauss(B) Debug.Print c.GetString End Sub

I.4.1.5. VDraw

VDraw là ActiveX cho phép tạo và quản lý bản vẽ kỹ thuật. Kiến trúc của VDraw tương tự

như AutoCAD nên rất dễ dùng đối với các sinh viên Tin học Xây dựng. Phần hướng dẫn sử dụng VDraw sẽ được trình bày chi tiết trong phần Đồ họa của tài liệu này.

I.4.2. Đăng ký & tìm hiểu ActiveX

I.4.2.1. Đăng ký ActiveX

Chọn menu Start / Run.

Để đăng ký ActiveX, trên dòng lệnh, gõ vào đoạn lệnh sau

regsvr32 "tên file activex cần đăng ký – đầy đủ cả đường dẫn"

Để bỏ đăng ký ActiveX, cũng làm tương tự nhưng với lệnh

regsvr32 /u "tên file activex cần bỏ đăng ký – đầy đủ cả đường dẫn"

I.4.2.2. Tìm hiểu cách sử dụng ActiveX bằng VB

Các ActiveX thường có phần trợ giúp đi kèm, chỉ cần chọn đối tượng trên form, nhấn F1

là bạn có thể mở phần trợ giúp của ActiveX đó để tham khảo.

Nếu khơng có trợ giúp hoặc chỉ cần tìm hiểu về các tham số của hàm, bạn nhấn F2 để mở

cửa sổ Object browser. Trên cửa sổ này bạn có thể tìm kiếm danh sách các hàm, các đối

tượng, thuộc tính, các thao tác. Các thu ộc tính kèm theo thơng tin v ề kiểu, các thao tác và

hàm kèm theo thông tin về các tham số, kiểu giá trị trả về...

Ngoài ra, với Object Browser, người phát triển có thể tìm kiếm các thuộc tính và thao tác

theo tên, đây là chức năng rất hữu ích để tìm nhanh các hàm.

Hình dưới là ví d ụ về cách sử dụng Object Browser: Tìm các hàm h ỗ trợ cho Excel của

Một phần của tài liệu Tài liệu hướng dẫn thực tập tốt nghiệp công nghệ thông tin (Trang 54 - 61)

Tải bản đầy đủ (PDF)

(116 trang)