0
Tải bản đầy đủ (.pdf) (66 trang)

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 TIN HỌC XÂY DỰNG - CHƯƠNG 1 PPTX (Trang 47 -52 )

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 chuyên 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). Ngoà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 chọn font, hộp thoại in ấy, hộp thoại chọn màu...)

Để đư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 thuc tính Kiu 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

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). Ngoà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 thao tác Refresh để cập nhật (xem ví dụ dưới đây).

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

- 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

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 TIN HỌC XÂY DỰNG - CHƯƠNG 1 PPTX (Trang 47 -52 )

×