178
3. Tạo hệ thống Menu và gán mã lệnh cho từng MenuItem
Sub TaoMenu()
Dim cb As CommandBar
Dim cpop As CommandBarPopup
Dim cpop2 As CommandBarPopup
Dim cbtn As CommandBarButton
' LẤY THAM CHIẾU ĐẾN THANH TRÌNH ĐƠN
Set cb = Application.CommandBars("Worksheet Menu Bar")
' TẠO MENU1: “VI DU MENU” (CommandBarPopup).
Set cpop = cb.Controls.Add(Type:=msoControlPopup, Temporary:=True)
cpop.Caption = "&Vi du Menu"
' TẠO MENUITEM2: “TINH TONG” (CommandBarButton).
' (thêm MenuItem vào MENU1)
Set cbtn = cpop.Controls.Add(msoControlButton, , , , True)
' Gán thuộc tính cho MenuItem.
cbtn.Caption = "Tinh Tong" ‘ Gán tiêu đề
cbtn.OnAction = "Macro1" ‘ Gán mã lệnh
' TẠO MENUITEM3: “TINH TICH” (CommandBarButton).
Set cbtn = cpop.Controls.Add(msoControlButton, , , , True)
cbtn.Caption = "Tinh Tich"
cbtn.OnAction = "Macro2"
' TẠO MENU4: “MENU CAP 2” (CommandBarPopup).
' Đây là MenuItem bắt đầu một nhóm trình đơn khác
Set cpop2 = cpop.Controls.Add(msoControlPopup, , , , True)
cpop2.Caption = "Menu Cap 2"
' Thêm SeparatorBar vào phía trước Menu này.
cpop2.BeginGroup = True
' TẠO MENUITEM5: “LUA CHON 1” (CommandBarButton).
Set cbtn = cpop2.Controls.Add(msoControlButton, , , , True)
cbtn.Caption = "Lua chon &1"
cbtn.OnAction = "Macro3"
' TẠO MENUITEM6: “LUA CHON 2” (CommandBarButton).
Set cbtn = cpop2.Controls.Add(msoControlButton, , , , True)
cbtn.Caption = "Lua chon &2"
cbtn.OnAction = "Macro4"
End Sub
Trong các câu lệnh tạo hệ thống trình đơn như trên, tham số Temporary của phương thức Add
đều được gán bằng True, vì vậy, khi người dùng thoát khỏi Excel thì các hệ thống trình đơn
vừa thêm vào sẽ được tự động xoá đi.
8.4.3. Xoá trình đơn tuỳ biến
Khi người dùng chỉ đóng workbook mà không đóng Excel, trình đơn vừa được thêm vào vẫn
còn được hiển thị trên hệ thống thanh trình đơn của Excel hoặc người dùng làm việc với m
ột
workbook khác mà không cần đến những tính năng trong trình đơn. Như vậy, có những lúc cần
phải xoá trình đơn vừa được thêm vào. Để thực hiện điều này, có thể sử dụng phương thức
Delete có trong đối tượng kiểu CommandBarControl hoặc CommandBarPopup hoặc
CommandBarButton.
Đoạn mã lệnh sau thực hiện xoá trình đơn “Vi du Menu” đã được tạo ra ở ví dụ trên.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T
E
E
X
X
C
C
E
E
L
L
179
Sub XoaMenu()
Dim cb As CommandBar
Dim cbp As CommandBarPopup
‘Lấy tham chiếu đến thanh trình đơn
Set cb = Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
‘Tham chiếu đến trình đơn “Vi du Menu”
Set cbp = cb.Controls("Vi du Menu")
If Not IsNull(cbp) Then
cbp.Delete
End If
End Sub
Ngoài ra, thay vì xoá trình đơn vừa tạo ra, người lập trình có thể thiết lập lại trạng thái ban đầu
của hệ thống thanh trình đơn trong Excel thông qua phương thức
Reset. Sau khi sử dụng
phương thức này, tất cả các trình đơn do người dùng tạo ra sẽ được xoá đi, và hệ thống thanh
trình đơn sẽ trở về trạng thái mặc định.
Sub ResetMenu()
Dim cb As CommandBar
Dim cbp As CommandBarPopup
‘Lấy tham chiếu đến thanh trình đơn
Set cb = Application.CommandBars("Worksheet Menu Bar")
cbp.Reset
End Sub
Trong hầu hết các trường hợp, người lập trình sẽ tạo trình đơn lúc mở workbook, và sẽ xoá
trình đơn khi đóng workbook và ta có thể thực hiện tự động quá trình này thông qua viêc xử lý
sự kiện liên quan đến việc mở và đóng Workbook. Trong sự kiện
Workbook_Open, gọi đến
thủ tục thực hiện việc tạo trình đơn, còn trong sự kiện
Workbook_BeforeClose, gọi đến thủ
tục thực hiện việc xoá trình đơn.
‘SỰ KIỆN Workbook_Open
Private Sub Workbook_Open()
‘Gọi thủ tục thực hiện việc tạo trình đơn
TaoMenu
End Sub
‘SỰ KIỆN Workbook_BeforeClose
Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘Gọi thủ tục thực hiện việc xoá trình đơn
XoaMenu
End Sub
8.4.4. Gán phím tắt cho Menu Item
Gán phím tắt cho Menu Item thực chất là gán phím tắt cho Macro tương ứng với Menu Item đó
(là Macro được gán cho Menu Item thông qua thuộc tính
OnAction). Bổ sung đoạn mã lệnh
sau vào cuối thủ tục
TaoMenu ở ví dụ trước để gán phím tắt là CTRL+SHIFT+T cho Menu
Item “
Tinh Tong”:
‘Tạo phím tắt cho MenuItem
Application.MacroOptions _
Macro:="Macro1", _
HasShortcutKey:=True, _
ShortcutKey:="T"
180
Trong khi tạo hệ thống trình đơn “Vi du Menu” ở ví dụ trước, Menu Item “Tinh Tong” có
thuộc tính
OnAction được gán bằng “Macro1”. Do đó để gán phím tắt cho Menu Item này,
người lập trình phải thực hiện thông qua việc gán phím tắt cho Macro có tên là “
Macro1”.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G
I
I
V
V
:
:
L
L
Ậ
Ậ
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
M
M
I
I
C
C
R
R
O
O
S
S
O
O
F
F
T
T
E
E
X
X
C
C
E
E
L
L
181
182
CHƯƠNG V: LẬP TRÌNH TRÊN AUTOCAD
1. Tổng quan về AutoCAD
1.1. Khả năng của AutoCAD
AutoCAD là một phần mềm hỗ trợ tạo bản vẽ kỹ thuật được dùng phổ biến nhất hiện nay. Đây
là sản phẩm của hãng Autodesk và được phát triển liên tục trong nhiều năm nay, điều này thể
hiện ở việc cập nhật hàng năm của các phiên bản AutoCAD.
Với AutoCAD, người dùng có thể dễ dàng tạo ra bản vẽ kỹ thuật dạng 2 chiều và dựng mô hình
ba chiều cho các v
ật thể với nhiều cách thể hiện khác nhau như dạng khung lưới hoặc dạng vật
thể đặc như hình dưới.
Hình vẽ trong AutoCAD được tổ chức chủ yếu theo dạng vector và chuẩn lưu trữ dạng DWG
được biết đến như là chuẩn lưu trữ hình vẽ dạng vector hiệu quả nhất thế giới. Để tạo sự thuận
lợi tối đa cho ngườ
i dùng, AutoCAD đã được thiết kế với cấu trúc và tính năng rất hợp lý:
Ø
Ø
Không gian để tạo bản vẽ được chia thành hai loại:
Không gian mô hình (Model), là nơi mà người dùng có thể vẽ hay dựng mô hình của
bất cứ vật thể nào mà không cần quan tâm đến giới hạn về kích thước của đối tượng,
của bản vẽ cũng như tỷ lệ trình bày.
Không gian trình bày hay còn gọi là không gian in (Layout), là nơi mà người dùng có
thể vẽ hay dựng mô hình như không gian mô hình, nhưng đây không phải là mục đích
chính của không gian in. Mục đích chính của không gian in là giúp cho người dùng có
thể biểu diễn hoặc trình bày bản vẽ theo ý tưởng của mình dựa trên mô hình đã được
dựng (hay đã được vẽ) trong không gian mô hình. Trong không gian in, với số lượng
không hạn chế, người dùng có thể dễ dàng tạo ra những bản in có tỷ lệ khác nhau,
cách bố trí, sắp
đặt khác nhau từ một mô hình đã vẽ này. Hình dưới là mô hình của vật
thể được xây dựng trong không gian mô hình.