Thursday, October 29, 2009

Thủ thuật nhỏ trong VB p3

Tự tạo Progress Bar cho ứng dụng Visual Basic

Nếu các bạn dùng các phiên bản Enterprise - 32bit của Visual Basic, thì có sẵn 1 Custom control cho phép bạn tạo nhanh một Progress bar theo mốt của Windows 9.x trông rất đơn sơ nhưng chuẩn mực

Còn ở đây tôi xin trình bày cách tự chế Progress bar bằng các control chuẩn của Visual Basic (Picture box), cách này đặc biệt hữu ích cho các bạn còn dùng phiên bản vb 16bit hay không muốn vác theo file COMCTL.OCX (MSCOMCTL.OCX) kích thước trên dưới 1Mb kèm theo ứng dụng của mình.

Bạn hãy tạo 2 Picture box lồng vào nhau, di chuyển vị trí Picture box bên trong, chọn màu sắc cho thích hợp. Còn để nó chạy được ư ? bạn hãy tăng (hoặc giãm) độ rộng của Picture box bên trong, cực đại khi độ rộng Picture box bên trong = bên ngoài, cực tiểu khi độ rộng Picture box bên trong = 0.


Phía trên là đồ xịn, phía dưới là hàng tự chế.

Bạn thấy không cũng ngang ngữa chớ bộ, không những thế hàng tự tạo còn cho phép chúng ta thay đổi màu sắc một cách vô tư, muốn xanh đỏ tím vàng đều được cả, về khả năng này thì đồ xịn rất khó thực hiện nếu không muốn nói là không được.

Để minh họa tôi đã dùng một Timer (Timer1) và 2 Picture box (Picture1 và Picture2), Picture2 màu xanh nằm trong Picture1 màu xám. Cùng với đoạn mã sau:

Option Explicit

Private Sub Form_Load()

Picture2.Width = 0
Timer1.Interval = 1000

End Sub

Private Sub Timer1_Timer()

If Picture2.Width <>

Picture2.Width = Picture2.Width + Picture1.Width \ 20

Else

Timer1.Interval = 0
MsgBox "Đã 20 giây trôi qua rồi đấy !"
End

End If

End Sub

Khi chạy thử chương trình bạn sẽ thấy Progress bar của chúng ta thay đổi mỗi giây 1 lần, cho đến hết 20 giây, thông báo bằng hàm MsgBox nếu bạn click OK thì nó goodbye bạn luôn.

Làm thế nào để 1 combo box tự động hiện danh sách khi nhận được focus, mà không cần người dùng click chuột ?

Combo box dễ thấy nhất trong các thảo trình là hộp chọn font như hình dưới đây.

Để làm được việc này, bạn cần nhớ lại tổ hợp phím tắt để mở một combo box trong Windows là ALT - DownArrow (Mũi tên xuống). Do đó ta chỉ cần làm sao cho combo box nhận được tổ hợp phím ALT + DownArrow là êm chuyện.

Rất dễ dàng bạn hãy cho lệnh Sendkeys gởi 1 tổ hợp phím ALT - DownArrow từ thủ tục tình huống GotFocus của Combo box cần mở.

Hãy tạo 1 form mới trên đó tạo một control nào đó ví dụ như CommandButton, kế đến bạn hãy tạo 1 Combo box. Lý do bạn phải tạo Command button trước để cho nó có focus trước (TabIndex = 0), khi chạy chương trình bạn hãy nhấn phím Tab để chuyển focus sang cho combo box, lúc này bạn sẽ thấy rất rõ tác dụng của lệnh SendKeys.

Private Sub Combo1_GotFocus()

SendKeys "%{DOWN}"

End Sub

Câu lệnh SendKeys "%{DOWN}" dùng để gởi tổ hợp phím ALT - DownArrow lên Combo box khi chính nó nhận được Focus do người sử dụng dịch chuyển bằng phím Tab hay bằng Mouse. Sẽ làm cho combo box tự động mở ra (hiện danh sách).

Thủ thuật này hữu ích khi bạn viết các ứng dụng có yêu cầu nhập dữ liệu, thường thì người dùng nhập dữ liệu bằng bàn phím, sau đó nhấn phím Tab đến một combo box, nó sẽ bung ra ngay để người dùng chọn lựa, rất tiện dụng, khiến cho người ta cảm thấy rất hài lòng về chương trình của mình.

Cửa sổ Form Layout dùng để làm gì ?

Đây là một trong những tính năng mới của Visual Basic 5 & 6, giúp cho lập trình viên dễ dàng phân bố các form trên màn hình khi chương trình thực thi một cách rất trực quan. Vào View \ Form Layout Windows, hay click vào Icon trên toolbar để hiển thị cửa sổ Form Layout nếu chưa xuất hiện.

Để sử dụng các chức năng trên cửa sổ này, bạn hãy right click trên cửa sổ để bật menu Popup gồm các mục chọn sau:

Resolution Guides: Hiển thị độ phân giải màn hình (chỉ hiển thị các độ phân giải thấp hơn độ phân giải mà màn hình đang sử dụng).

Dockable: Hiển thị Form Layout bằng một cửa sổ riêng hay nằm chung với các cửa sổ Project, Properties.

Hide: đóng cửa sổ Form Layout.

Startup Position: Vị trí form hiển thị trên màn hình

Manual: Tự bạn thiết lập, bằng cách rê form có tên tương ứng, và dựa vào các Resolution Guides để biết rõ vị trí form sẽ xuất hiện trên màn hình khi chạy chương trình.

Center Owner: Nằm giữa form đã gọi nó.

Center Screen: Nằm giữa màn hình ở bất kỳ độ phân giải nào.

Windows Default: Theo chuẩn của Windows, nằm hơi chệch về góc trái trên của màn hình.

Mỗi form trong giai đoạn thiết kế, muốn hiển thị trên cửa sổ Form Layout bạn phải mở form đó lên, nó sẽ xuất hiện trên cửa sổ Form Layout bằng tên tương ứng, vị trí thực của nó sẽ xuất hiện trên màn hình lúc chạy được phản ảnh rất chính xác trong cửa sổ này.

Xưa nay người ta có quan niệm là ngôn ngữ lập trình Visual Basic "bị yếu" hơn các ngôn ngữ khác do không có các hàm, thủ tục can thiệp đến các thông tin cấp thấp của hệ thống như ngôn ngữ C. Nhưng cũng chính Visual Basic đã bù vào sự thiếu hụt đáng tiếc của mình bằng cách liên kết và sử dụng các hàm API (Application Programmer's Interface) có sẵn trong Windows qua câu lệnh Declare. Giúp cho ta làm được khối việc tưởng chừng như vô vọng. Thật ra các hàm API này được tạo ra bằng ngôn ngữ C do đó ta có thể tận dụng được các khả năng của C trong Visual Basic. Các hàm API tồn tại dưới dạng file có phần mở rộng là DLL hay EXE trong thư mục System. Ơở các bài viết sau chúng ta sẽ cùng nhau tìm hiểu về các API tuyệt vời này. Một ứng dùng Visual Basic viết đàng hoàng, chạy ngon lành thì đố ai nhìn mà biết được bạn viết bằng ngôn ngữ nào (bạn lưu ý chỉ cho người ta nhìn thôi nhé).

No comments:

Post a Comment