• Thứ Năm, 23/12/2010 10:29 (GMT+7)

    Buộc người dùng chỉ thao tác trên Form đang mở

    Câu hỏi :

    Xin hỏi có cách nào để bắt người dùng phải thao tác trên 1 Form đang mở, không thể di chuyển (kích hoạt) sang Form khác?



    Trả lời :

    Tùy thuộc vào mối quan hệ giữa các Form liên quan mà cách giải quyết yêu cầu của bạn sẽ rất khác nhau:

    1. Nếu các Form mà bạn muốn kiểm soát thuộc cùng 1 ứng dụng của bạn thì vấn đề sẽ rất đơn giản. Thật vậy, mỗi Form khi được hiển thị sẽ làm việc ở 1 trong 2 chế độ: Modal hay Modeless. Chế độ làm việc mặc định là Modeless, ở chế độ này, Form cho phép người dùng tự do chuyển sang các Form khác để làm việc trong khi Form Modeless hiển thị và tương tác với người dùng. Còn ở chế độ Modal, Form sẽ bắt người dùng phải làm việc với nó cho đến khi nó bị đóng lại. Trong thời gian Form "Modal" hiển thị, nó sẽ không cho phép người dùng làm việc với các Form khác của ứng dụng liên quan. Tuy nhiên người dùng có thể chuyển sang các Form hay cửa sổ của các ứng dụng khác để làm việc bình thường.

    Nếu lập trình bằng VB 6.0, bạn có thể hiển thị Form ở chế độ "Modal" như sau:
    Form2.Show vbModal

    Còn nếu dùng lệnh:
    Form2.Show 'hay Form2.Show vbModeless

    thì Form2 sẽ làm việc ở chế độ Modeless. 

    2. Nếu các Form mà bạn muốn kiểm soát thuộc các ứng dụng khác nhau thì việc giải quyết yêu cầu của bạn sẽ khá phức tạp. Bạn cần can thiệp vào Windows, thí dụ chặn các sự kiện về chuột để loại bỏ các sự kiện dời chuột ra khỏi Form. Bạn nên đọc bài "Win32 Hooks" trong CD MSDN của Microsoft để biết chi tiết và cụ thể thông tin về lập trình chặn các sự kiện chuột trong Windows.

    Chuyên mục: Lập trình