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

Tài liệu “Nhấn và xem” với VB6 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (228.76 KB, 13 trang )

“Nhấn và xem” với VB6

Trong công việc cũng như trong học tập, chắc không ít lần bạn phải tiếp xúc
với tài liệu nước ngoài và tự điển trên máy tính là trợ thủ đắc lực không thể
thiếu. Khả năng 'nhấn và xem' (hay 'click and see') - tra nghĩa từ ngay trong
tài liệu là tính năng rất cần thiết. Bài viết này sẽ hướng dẫn bạn xây dựng
một chương trình dạng 'nhấn và xem' với VB6.
Nguyên tắc hoạt động

Chương trình được đặt tên là CnS. Để có thể tra từ trong các ứng dụng khác (MS
Word, Arobat Reader, IE,...), chúng ta phải 'bắt' - câu móc hệ thống - để phát hiện khi
người dùng nhấn chuột (dĩ nhiên chương trình của chúng ta phải chạy nền), sau đó sao
chụp từ vị trí con trỏ chuột vào bộ nhớ và gửi về cho CnS xử lý. CnS sẽ so sánh từ này
với CSDL từ điển có sẵn và hiển thị form thông tin ngay vị trí từ muốn tra. CnS chạy
nền, đặt biểu tượng ở khay hệ thống.

Khởi tạo chương trình

Để bắt đầu, bạn tạo Standard Project mới, form1 mặc định được tạo. Vào menu
Project/Add Form để thêm form2, Project/Add module để thêm module mới. Đặt tên
form1=frmMain (Visible=false, Caption= 'Click and See'), form2=frmPopup (form hiển thị
thông tin, BoderStyle=0), module1=mHook. Vào Project/Properties chọn Startup Object
là Sub Main.

Tạo một file CSDL trong Access gồm 1 bảng (WordsTable) và trong bảng này tạo 9
trường: Words, Display, Pronunciation, Noun, Verbs, Adjective, Preposition, Adverb và
Other. Lưu với tên EV.mdb cùng thư mục với CnS.

Phần FRMMAIN

Trong frmMain bạn dùng MenuEditor tạo một menu cha (Caption: tùy ý, name:


mnuCnS,bỏ chọn ô Visible) và 2 menu con: 1(Caption: &Return to Program, name:
mnuR), 2(Caption: &Exit Program, name: mnuE). Nhấn Ctrl+T để vào hộp thoại
Components Control, click chọn và thêm lên form:

1. Microsoft ADO Data Control 6.0(OLEDB) (Name:ADO)

2. Microsoft DataGrid Control 6.0(OLEDB) (Name:DG, Enable=False, DataSource =
ADO)

3. Microsoft SysInfo Control 6.0 (Name: SI)

Đối tượng DG kết hợp với ADO sẽ hiển thị và cho phép bạn hiệu chỉnh trực tiếp lên
CSDL (Edit Mode).

Thêm lên form 5 CommandButton:

1.Caption: &Edit Mode, Name:cmdE

2. Caption: &Add Record, Name: cmdAR, Enable=false

3. Caption: &Delete Record, Name: cmdDR,Enable=false

4. Caption: &Return to Systray, Name: cmdRT

5. Caption: &Exit, Name: cmdExit

Ngoài ra, bạn thêm 2 Image để hiển thị trạng thái 'Enable' (hoạt động) và 'Disable' (tắt)
chương trình ở khay hệ thống.

Sub đảm nhiệm việc tạo icon ở khay hệ thống:


Private Sub AddToSysTray()

TrayI.cbSize = Len(TrayI)

TrayI.hWnd = Me.hWnd 'lấy handle của frmMain

TrayI.uId = 1&

TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE

TrayI.ucallbackMessage = WM_LBUTTONDOWN

TrayI.hIcon = imgIcon(1).Picture 'Icon hiển thị trạng thái Enable

TrayI.szTip = 'Click and See® Program-Enable' & Chr$(0) 'Chr$(0)- định dạng lại
tooltiptext

Shell_NotifyIcon NIM_ADD, TrayI 'tạo Icon

Me.Hide 'Ẩn frmMain đi

End Sub

và gỡ bỏ icon khỏi khay hệ thống:

Private Sub RemoveFromSystray()

TrayI.hWnd = Me.hWnd


TrayI.uId = 1&

TrayI.cbSize = Len(TrayI)

Shell_NotifyIcon NIM_DELETE, TrayI 'hủy bỏ icon

UnhookWindowsHookEx hHook 'không câu móc hệ thống

End Sub

Thủ tục form_load:

Private Sub Form_Load()

AddToSysTray 'xuống khay hệ thống

bState = 1 'trạng thái của chương trình là Enable

Edit_Mode = 0 'không cho phép hiệu chỉnh DataGrid

'thực hiện câu móc chuột hệ thống:

hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc,
App.hInstance, 0)

ConnectStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' & App.Path &
'\EV.mdb;Persist

Security Info=False' 'chuỗi ConnectString của ADO


ADO.ConnectionString = ConnectStr

ADO.RecordSource = RecordSourceStr

ADO.Refresh

ADO.Recordset.Sort = 'Words' 'sắp xếp theo trường Words

End Sub

Sự kiện xử lý nhấn chuột lên form (thực ra là nhấn lên Icon ở khay
hệ thống):

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)

Msg = X / Screen.TwipsPerPixelX 'lấy tọa độ tương ứng với từng thông báo

Select Case Msg

Case WM_RBUTTONUP 'sau khi nhấn chuột phải

Me.PopupMenu mnuCnS 'hiển thị menu Popup

Case WM_LBUTTONDOWN 'nhấn chuột trái

bState = (bState = 0)

Select Case Abs(bState)


Case 0 'Disable chương trình

TrayI.hIcon = imgIcon(0).Picture

TrayI.szTip = 'Click and See Pro gram-Disable' & Chr$(0)

'không câu móc

UnhookWindowsHookEx hHook

Case 1 'Enable chương trình

TrayI.szTip = 'Click and See Pro gram®-Enable' & Chr$(0)

TrayI.hIcon = imgIcon(1).Picture

'câu móc lại

hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc,
App.hInstance, 0)

End Select

Shell_NotifyIcon NIM_MODIFY, TrayI 'biến đổi thông tin Icon

End Select

End Sub

Khi tìm từ, nếu có DG sẽ trích duy nhất từ đó trong CSDL và hiển thị ở dòng đầu tiên.

Để biết từ cần tìm có trong CSDL hay không ta dựa vào thuộc tính Text của cột đầu
tiên:

Public Function FindWord(ByVal sWord As String) As Boolean

On Error GoTo errTrap

'câu truy vấn, không có khoảng cách trắng giữa dấu nháy đơn và dấu nháy kép

ADO.RecordSource = RecordSourceStr & ' where [Words]= ' ' & sWord & ' ' '

ADO.Refresh

FindWord = IIf(DG.Columns(0).Text <> vbNullString, True, False)

Exit Function

errTrap:

Select Case Err.Number

Case 6160 'lỗi không tìm thấy

FindWord = False 'không tìm thấy

End Select

End Function

Phần FRMPOPUP


Chọn BorderStyle cho form=0-None, Backcolor=Tooltip, Width=2000, Height=3075.
Thêm một Shape Control (mặc định là hình chữ nhật, Top=0, Left=0, Width=2000,
Height=3075) làm đường biên cho form, một CommandButton (Name:cmdClose) để
tạm thời giấu cửa sổ frmPopup, và một vbalRichEditControl (Name:rtfMain,
BackColor:vbWhite, Border=True).

Chú ý, trước khi sử dụng OCX vbalRichEditControl (có cung cấp kèm theo mã nguồn
hoặc có thể dùng RichTextBox), bạn phải chép nó vào thư mục Windows/System32,
nhấn <Start>-Run-cmd, từ dấu nhắc DOS di chuyển đến thư mục System32, gõ
'regsvr32 RichEditControl.ocx' nhấn Enter. Đồng thời cũng đăng kí thêm thư viện
SSubtmr6.dll (có cung cấp kèm theo mã nguồn). vbalRichEditControl là một
RichTextBox cấp cao, tôi đã tích hợp thêm TOM (Text Object Model) và các tính năng
khác nên rất hữu ích. Vào hộp thoại Add Components (Ctrl+T) chọn và thêm lên form
Microsoft Direct Text-to-Speech (file xvoice.dll, Name=TTS ) để thêm chức năng phát
âm cho chương trình. Thêm một Command Button (Name:cmdSpk) để khi nhấn vào đó
sẽ phát âm.

×