Nhng nếu bạn là ngời chuyên ráp máy hay một cửa hàng tin học thì có lẻ bạn nên viết 1 chơng trình tự động chạy lúc khởi động Start Up để trng bày các phần mềm đã cài đặt trên máy, luôn t
Trang 1Xây dựng chơng trình để khởi động các chơng trình khác
Nhập Dẫn
Để bày vẻ và quảng cáo thêm cho máy tính có rất nhiều cách Nhng nếu bạn là ngời chuyên ráp máy hay một cửa hàng tin học thì có lẻ bạn nên viết 1 chơng trình tự động chạy lúc khởi động (Start Up) để trng bày các phần mềm đã cài đặt trên máy, luôn tiện giới thiệu chút ít về mình hay cửa hàng Ta tạm
đặt tên cho chơng trình đầu tiên này là "Launch" nhé
Viết chơng trình, có rất nhiều ngôn ngữ lập trình d sức để viết một chơng trình nh vậy Nhng dễ dàng hơn hết, có lẻ và Visual Basic Viết chơng trình này bằng Visual Basic không đòi hỏi gì bạn nhiều, chỉ cần chút khéo léo và áp dụng các công cụ của Visual Basic một cách thích hợp cộng thêm chút ít sáng tạo mà thôi
Chơng trình Launch đã hoàn tất
Có rất nhiều cách để phân loại các phần mềm cài đặt trên máy Chơng trình thí dụ này phân nhóm các ứng dụng cài đặt trong Windows thành 3 nhóm: Windows System (các công cụ chuẩn của Windows), Applications (các ứng dụng của ngời dùng cài thêm), Vietnamese Utilities (các tiện ích về tiếng việt) Cơ chế hoạt động của chơng trình này là "mồi lửa" cho ngời sử dụng khởi động chơng trình mà mình cần bằng menu hay các button của chơng trình, sau đó chơng trình này tự động "biến"
Để mồi lửa cho ngời sử dụng, ta buộc phải biết chính xác vị trí của các file chơng trình mà ngời dùng cần
Đầu tiên là các tiện ích kèm theo Windows nh WordPad, Notepad, Paint, (tôi chỉ xin thí dụ 3 chơng trình thôi) Các file thực thi của chơng trình này chủ yếu nằm trong th mục Windows, vậy chỉ cần tìm
ra th mục Windows là ta có thể giải quyết đợc vấn đề
Chuyện này cũng rất dễ dàng và vô cùng may mắn là Windows có khả năng tự động tìm kiếm các file thực thi trong th mục Windows và Windows\System cho nên chúng ta khỏe (ta có thể hiểu là nó tự đặt dờng dẫn đến th mục Windows và Windows\System)
Chú ý: Khi muốn gọi WordPad bạn phải gọi file write.exe và Paint phải gọi file Pbrush.exe 2 file này không phải là file chơng trình chính, chúng chỉ có nhiệm vụ gọi file thực thi của Paint (MSPaint.exe)
và WordPad (WordPad.exe) nằm trong Program files\Accessories mới thực sự là file chơng trình chính Microsoft phải làm nh vậy để tơng thích với các chơng trình cũ của Windows 3.x Sau đây là tên file của một số chơng trình có sẵn trong Windows (với điều kiện bạn phải cho cài đặt khi setup Windows)
Tên file Th mục Chơng trình
Msconfig.exe System System Configuration Utility
Sysedit.exe System System Configuration Editor
Vậy là chuyện gọi 1 chơng trình của Windows không có gì khó khăn, chỉ cần biết tên file là xong, mọi chuyện còn lại là của Windows
Trang 2Còn các ứng dụng khác do ngời dùng hay ngời lắp máy cài đặt thêm chỉ có cách là gọi theo đờng dẫn chính xác vì mỗi máy mỗi khác, công sức cho việc tìm kiếm khá gian nan, cha hợp với các tay nghiệp
d nh chúng ta Khuyết điểm của chơng trình là phải viết riêng cho từng máy, chúng ta sẽ giải quyết vấn
đề này ở bài viết sau "Nâng cấp chơng trình Launch"
Bạn cũng có thể viết chơng trình này cho chức năng Auto Run của CD chơng trình, lúc nay mọi chuyện lại càng dễ dàng vì các đờng dẫn và chơng trình trên CD đều nằm trong tay ta, cứ đi từ th mục gốc vào
là xong chuyện
Thiết kế giao diện
Khởi động Visual Basic Tôi dùng Visual Basic 5 để minh họa, các bạn có thể dùng các phiên bản khác (v4 hay v6) cũng không sao Còn nếu máy cha có phải tiến hành cài đặt, nên chọn các ấn bản
Enterprise để tận dụng sức mạnh của Visual Basic (VB) Kể từ Visual Basic 5 trở đi Microsoft chỉ phát hành version 32 bit, version 16bit cuối cùng xuất hiện ở Visual Basic 4
Vào file/ New Project, click chọn Standard EXE, click OK, bạn sẽ thấy ngay một form trống xuất hiện sẵn sàng để thiết kế
Bây giờ bạn hãy tạo các control khác trên form, vị trí các control bạn có thể tùy ý bạn hay theo mẫu minh họa, thiết đặt các thông số về thuộc tính (properties) nh sau:
form
> BorderStyle: 1- FixedSingle
> MinButton: True
> Icon: cho 1 file *.ico, *.cur để làm biểu tợng
cho chơng trình
> Caption: Launch
frmMain form chính của chơng trình
Mục đích
Command
Button Caption: Windows cmdWin Các nút nhấn để khởi động các ứng dụng tơng ứng trong
nhóm Command
Trang 3của việc
gán thuộc
tính
BorderStyl
e: 1-
FixedSingl
e là không
cho ngời
dùng thay
đổi kích
th-ớc cửa sổ
chơng trình
trong khi
chạy
MinButton:
True, cho
phép ngời
dùng
Minimaize
chơng trình
của mình
Mặc nhiên
khi chọn
BorderStyl
e: 1-
FixedSingl
e thì 2
thuộc tính
MinButton
&
MaxButton
tự động
gán là
False
Command
Label Caption: Để trốngAlignment: 2- Center
CheckBox Caption: Unload after 20 secValue: 1-Checked chkUnload Nếu check thì sao 20 giây chơng trình tự động thoát.
PictureBoxAppearance: 0- FlatBorderStyle: 0- None
BackColor: &H00C0FFC0& picIns
Bạn nên chọn một màu nào
đó cho BackColor để dễ nhìn
Timer (giữ nguyên các thuộc tính) timer1 Phục vụ cho việc tự động
Trang 4Bạn tự cho
kích thớc
sao cho
picIns nhỏ
hơn picOut
1 chút Và
picIns phải
nằm lọt
trong
picOut, để
có thể làm
picIns lọt
vào bên
trong bạn
làm nh sau:
Tạo
picOut,
hiệu chỉnh
kích thớc
cho hợp lý
(hình minh
họa), click
chọn
picOut, vẽ
thêm 1
picturebox
bên trong
nữa, điều
chỉnh kích
thớc và đặt
tên là
picIns Hai
PictureBox
này sẽ làm
thanh hiển
thị thời
gian khi
chơng trình
ở chế độ tự
động thoát
thoát
Tạo hệ thống các menu cho chơng trình:
Từ trình đơn Tools chọn Menu Editor hay nhấn tổ hợp phím Ctrl - E cũng có tác dụng tơng tự
Trang 5Số lợng menu này chỉ làm ví dụ Bạn thích đa chơng trình nào vào menu thì tạo ra mục chọn menu tơng ứng Trong hộp thoại Menu Editor có các nút với công dụng nh sau:
Sau đây thuộc tính của các menu
&Windows _ Windows Explorer _
- _ Paint _ WordPad _ Notepad
mnuWin mnuWE
mnusp1
mnuPaint mnuWP mnuNotepad
&Applications _ Microsoft Word _ Microsoft Excel _ Microsoft Access _
- _ Paint Shop Pro _
- _ Visual Basic _ Visual C++
mnuApp mnuWord mnuExcel mnuAccess
mnusp2
mnuPaintPro
mnusp3
mnuVb mnuVc
&Vietnamese _ VNI Tan Ky 4 _ VietKey 4.09d _
- _ Lac Viet td _ Just click 'n' see
mnuVN mnuVNI mnuVK
mnusp4
mnuLV mnuClickSee
Chúng ta thấy có 4 menu có tên lần lợt sp1, sp2, sp3, sp4, thuộc tính Caption của nó chỉ là dấu trừ "-" Tác dụng của nó là tạo ra các đờng kẻ ngang để phân cách các mục chọn trong menu Sau khi tạo xong, bạn có các hệ thống menu nh sau
Trang 6Giao diện sau khi tạo xong hệ thống menu Bây giờ bạn có thể chạy thử chơng trình bằng phím F5 Lúc này bạn đã thiết kế xong phần giao diện của chơng trình, kế tiếp chúng ta sẽ tiến hành viết code cho chơng trình
Viết Code cho chơng trình Launch
Viết Code cho menu
Ta chỉ cần viết code cho menu, sau đó dùng các nút lệnh để gọi menu tơng ứng
Bây giờ chúng ta viết code cho mục Windows Explorer trong menu Windows Vào Windows chọn Windows Explorer để viết code cho mục chọn menu này
Bạn gõ vào đoạn sau:
Private Sub mnuWE_Click() ' dòng này có sẵn
Trang 7Dim P
P = Shell("explorer", vbNormalFocus)
End Sub ' dòng này có sẵn Giải thích:
* Dim P
Khai báo 1 biến kiểu variant để chứa trị trả về của hàm Shell Đây là kiểu dữ liệu bao trùm tất cả các kiểu dữ liệu trong Visual Basic
* P=Shell("explorer",vbNormalFocus)
Hàm Shell dùng để gọi một chơng trình khác thi hành
Cú pháp Shell(pathname[,windowstyle])
pathname: là đờng dẫn và file thực thi của chơng trình cần gọi Đây là 1 xâu cho nên khi viết bạn phải
đặt chúng trong cặp dấu " " mới đúng
windowstyle: là hằng số qui định phong cách khi khởi động của chơng trình cần chạy Thí dụ: sau khi gọi chơng trình bạn cần Maximize, Minimize chơng trình đó các hằng có giá trị và ý nghĩa nh sau:
VbHide 0 Window is hidden and focus is passed to the hidden window
VbNormalFocus 1 Window has focus and is restored to its original size and position VbMinimizedFocus 2 Window is displayed as an icon with focus
VbMaximizedFocus 3 Window is maximized with focus
VbNormalNoFocus 4 Window is restored to its most recent size and position The currently active window remains active.
VbMinimizedNoFoc
us 5 Window is displayed as an icon The currently active window remains active
Vậy có thể viết lại hàm Shell nh sau Shell("explorer",1) cho gọn
Lu ý: Trong phần pathname của hàm shell lý ra phải ghi đầy đủ đờng dẫn, thí dụ
"C:\Windows\Explorer.exe" (giả sử th mục windows là c:\windows) thay vì "explorer.exe" Sở dĩ ta có thể ghi gọn nh vậy là vì Windows tự động đặt dờng dẫn path đến các th mục nh: Windows;
Windows\system Do đó chỉ cần ghi explorer.exe cho tổng quát (khỏi sợ sai đờng dẫn khi đem chạy trên máy khác)
Bây giờ nhấn F5 để chạy chơng trình, vào menu Windows chọn Windows Explorer, lập tức chơng trình Windows Explorer đợc khởi động
Tơng tự nh vậy bạn có viết code cho tất cả các menu con còn lại của menu Windows
Notepad.exe (Windows/Notepad)
Write.exe (Windows/WordPad)
Pbrush.exe (Windows/Paint)
Đối với Paint và WordPad ta phải dùng 2 file write.exe & pbrush.exe trong th mục Windows để khởi
động Thực ra 2 file này chỉ có chức năng gọi WordPad.exe và MSPaint.exe (trong th mục \Program Files\Accessories\) chứ không phải là file chơng trình chính Microsoft phải làm vậy để tơng thích với các chơng trình cũ
Còn các mục chọn khác bạn cũng viết hàm Shell tơng tự nhng đờng dẫn phải cụ thể và chính xác Thí dụ để viết code cho menu "Lac Viet td" Vào VietNamese / Lac Viet td, gõ vào
Private Sub mnuLV_Click()
Dim F F=Shell("d:\tools\lvtd\lvtd.exe",1)
End Sub
Do file lvtd.exe của máy tôi nằm trong th mục d:\tools\lvtd
Trang 8Nhấn F5 chạy thử xem có vừa ý hay không ?
Viết code cho các Command Button
Bây giờ ta viết lệnh cho các CommandButton tơng ứng Yêu cầu là viết code sao cho khi nhấn vào nút Windows thì menu Windows tơng ứng sẽ hiện ra nh hình minh họa
Vậy phải viết lệnh cho nút
+ Windows (cmdWin) gọi menu Windows (mnuWin)
+ Application (cmdApp) -> mnuApp
+ VietNamese (cmdVN) -> mnuVN
Double click vào cmdWin (hay Right click chọn View code từ menu popup), gõ vào
Private Sub cmdWin_Click()
popupmenu mnuWin
End Sub Giải thích:
popupmenu mnuWin hành vi (method) popupmenu dùng để hiển thị menu có tên mnuWin
Xem cú pháp popupmenu
Trong chơng trình ta có thể dùng hành vi (method) popupmenu để gọi một menu hiển thị, menu này phải đợc tạo trớc (menu editor) và có ít nhất 1 mục chọn con (menu thứ cấp)
Cú pháp:
object PopupMenu menuname , flags , x , y
Trong đó:
object: tên form mà trình đơn sẽ xuất hiện Nếu không ghi có nghĩa là dùng form hiện hành
menuname: tên menu cần hiển thị
flags: giá trị nguyên qui định vị trí xuất hiện của menupopup
Trang 9Tên Hằng Giá Trị ý nghĩa
vbPopupMenuLeftAlign 0 Trị mặc định, cạnh trái của trình đơn sẽ ở vị trí x
vbPopupMenuCenterAlign 4 Trình đơn sẽ canh giữa so với vị trí x
vbPopupMenuRightAlign 8 Cạnh phải của trình đơn sẽ ở vị trí x
x,y Tọa độ trình đơn sẽ xuất hiện Nếu không ghi mặc nhiên trình đơn sẽ xuất hiện ở vị trí mouse
Tơng tự cho 2 nút lệnh còn lại Khi chạy thử chơng trình bạn click vào nút lệnh nào sẽ xuất hiện menu tơng ứng Từ đây ngời dùng có thể chọn lệnh từ menu popup hay menu pulldown (menu kéo xuống)
đều đợc
Viết lệnh cho nút Exit nh sau:
Private Sub cmdExit_Click()
End
End Sub
Làm cho chơng trình tự động thoát
Đối t ợng Timer
Đối tợng Timer
Là đối tợng dùng để xử lý các sự kiện thời gian trong Visual Basic Cách hoạt động của đối tợng: cứ sau một khoảng thời gian do ngời viết chơng trình qui định, timer sẽ tự động phát sinh 1 sự kiện thời gian
Vậy nếu chúng ta muốn sau 1 khoảng thời gian chơng trình phải tự động thi hành 1 số lệnh nào đó, ta chỉ việc sử dụng timer này và viết các lệnh cần timer thực hiện vào sự kiện thời gian đó
Các thuộc tính (Properties) của timer:
Enable: Có kiểu luận lý (True/False) True cho phép timer hoạt động và False sẽ làm vô hiệu timer Interval: Là giá trị nguyên, đơn vị là 1/1000 giây Đây chính là khoảng thời gian bao nhiêu lâu để timer thực hiện lệnh Nếu là 0 tơng đơng với Enable=False
Trong khi chạy chơng trình timer sẽ không hiển thị nh các đối tợng khác Chúng ta có thể thiết lập các
2 thuộc tính Enable và Interval trong khi thiết kế hay khi chạy chơng trình
Nếu đang ở chế động tự động thoát (mục Unload after 20 Sec đợc chọn) sau 20 giây chơng trình sẽ tự
động thoát, không cần chúng ta can thiệp Để làm đợc việc này ta phải dùng Timer và Picture box (picIns, picOut) đã tạo từ trớc
Sau khi chơng trình khởi động hoặc khi check vào checkbox Mỗi giây độ rộng hiện tại của picIns cộng với độ rộng của picOut/20 (vì 20 giây), cho đến khi độ rông của picIns = picOut thì dừng chơng trình Nếu không check chức năng tự động thoát không hoạt động
Chúng ta tiến hành viết code cho các đối tợng nh sau
Trang 10Tình huống Form_Load() sẽ đợc kích hoạt khi chơng trình khởi động, timer hoạt động với trị interval =
1000 (tơng đơng 1 giây), độ rộng picIns ban đầu là 0
Private Sub Form_Load()
Timer1.Interval = 1000
PicIns.Width = 0
End Sub
Khi ngời dùng Click vào check box Nếu có chọn sẽ làm cho timer hoạt động tơng tự nh Form_Load(), nếu không chọn thì cho timer ngừng
Private Sub chkUnload_Click()
If chkUnload.Value = 1 Then
PicIns.Visible = True
Timer1.Interval = 1000
Else
Timer1.Interval = 0
PicIns.Visible = False
End If
PicIns.Width = 0
End Sub
Kiểm tra xem độ rộng picIns >= picOut hay không Nếu có, kết thúc chơng trình (End), nếu không tiếp tục tăng độ rộng picIns theo chu kỳ mỗi giây 1 lần
Private Sub Timer1_Timer()
If PicIns.Width >= PicOut.Width Then
End
Else
PicIns.Width = PicIns.Width + PicOut.Width / 20
End If
End Sub
Chạy thử chơng trình xem nó có tự động thoát không Thử click vào check box xem có hoạt động nh mong muốn cha
Tô son điểm phấn
Thêm vài lời nhắc nhỡ
Chúng ta còn sót 1 đối tợng là lblMsg (Label box) cha sử dụng đến Label box này ta dùng để in câu thông báo hớng dẫn mỗi khi ngời dùng rê Mouse qua các Command Button
Thí dụ nh: Khi rê mouse trên nút Windows thì câu thông báo sẽ là "Các ứng dụng chuẩn của Windows" chẳng hạn Để làm đợc điều này ta hãy khảo sát tình huống MouseMove của đối tợng, cụ thể là của Command Button và Form Right click vào nút Windows, chọn View code, chọn tình huống
MouseMove
Private Sub cmdWin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMsg.Caption = "Run Windows Utilities (Accessories group)"
End Sub
Hiển thị câu thông báo Run Windows Utilities (Accessories group) trong lblMsg khi mouse di chuyển trên nút Windows Một cách tơng tự bạn có thể làm cho các button còn lại
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
lblMsg.Caption = "Please, select a program to start your work."
End Sub
Hiển thị câu thông báo Please, select a program to start your work trong lblMsg khi mouse di chuyển phía trên form
Khi chạy chơng trình, bạn thử rê mouse lên các button sẽ thấy nội dung của lblMsg thay đổi liên tục (hiển thị các câu thông báo của chính bạn)
Làm sao để form khởi động ở giữa màn hình