Trang chủ MapBasic nâng cao Bài 4: Dialog nâng cao trong MapBasic

Bài 4: Dialog nâng cao trong MapBasic

- Quảng cáo -

Cách dễ dàng nhất để thêm các tùy chọn bổ sung vào các ứng dụng MapBasic là chuyển từ việc sử dụng các lệnh NoteAsk sang các hộp thông báo của Windows tiêu chuẩn. Mặc dù lệnh Note có ích để nhanh chóng đưa ra phản hồi cho người dùng, nhưng có các tùy chọn khác để tùy chỉnh các hộp thoại.

Hộp thoại Note tiêu chuẩn MapBasic – giới hạn ở biểu tượng ! và thanh tiêu đề của Map MapInfo

Hãy cùng xem những gì chúng ta có thể nâng cao về các hộp thoại. Bắt đầu bằng cách bao gồm một tham chiếu đến hộp thoại Windows tiêu chuẩn, được bao gồm trong thư viện User32.dll. Sử dụng sub/functions (được gọi là MessageBoxMsgBox tương ứng). Hàm được sử dụng cho các hộp thoại cần trả về phản hồi (thay thế cho hàm Ask) và sub khi phản hồi không quan trọng (thay thế cho Note). Cuối cùng, cũng có một loạt các DEFINE để làm cho việc gọi các hằng số trở nên thuận tiện và dễ nhớ hơn.

Declare Function MsgBoxA Lib “User32.dll” Alias “MessageBoxA” (ByVal hWnd As Integer, ByVal sTxt As String, ByVal sCaption As String, ByVal iTyp As Integer) As Integer
Declare Function MsgBox(ByVal sTxt As String, ByVal sCaption As String, ByVal iType As Integer) As Integer
Declare Sub MessageBox(ByVal sTxt As String, ByVal sCaption As String, ByVal iType As Integer)
‘ Messagebox dialog buttons
DEFINE vbOKOnly 0
DEFINE vbOKCancel 1
DEFINE vbAbortRetryIgnore 2
DEFINE vbYesNoCancel 3
DEFINE vbYesNo 4
DEFINE vbRetryCancel 5
‘ Messagebox dialog icons
DEFINE vbCritical 16
DEFINE vbQuestion 32
DEFINE vbExclamation 48
DEFINE vbInformation 64
‘ Messagebox default button
DEFINE vbDefaultButton1 0
DEFINE vbDefaultButton2 256
DEFINE vbDefaultButton3 512
DEFINE vbDefaultButton4 768
‘ MsgBox Returned value
DEFINE vbOK 1
DEFINE vbCancel 2
DEFINE vbAbort 3
DEFINE vbRetry 4
DEFINE vbIgnore 5
DEFINE vbYes 6
DEFINE vbNo 7
* ‘ Wrapper for standard Win32 Msgbox function ‘*
Function MsgBox(ByVal sTxt As String, ByVal sCaption As String, ByVal iType As Integer) As Integer
MsgBox = MsgBoxA(WindowInfo(WIN_MAPINFO, WIN_INFO_WND), sTxt, sCaption, iType)
End Function
* ‘ Messagebox which doesn’t return a value ‘*
Sub MessageBox(ByVal sTxt As String, ByVal sCaption As String, ByVal iType As Integer)
Dim i As Integer
i = MsgBoxA(WindowInfo(WIN_MAPINFO, WIN_INFO_WND), sTxt, sCaption, iType)
End Sub

Bây giờ đã xong việc khai báo, bạn có thể gọi hộp thông báo MapInfo tiêu chuẩn với lệnh sau:

Call MessageBox(“Standard Windows message box”, “My MapBasic Program”, vbExclamation)

Hộp thoại thông báo với tiêu đề tùy chỉnh

Như đã thấy ở trên, MessageBox được gọi bằng cách chuyển văn bản của hộp thoại, chú thích tiêu đề và một hoặc nhiều tùy chọn. Trong trường hợp này, chúng tôi đã sử dụng vbExclamation để sao chép sự xuất hiện của lệnh Note. Không có gì quá đặc biệt, nhưng hãy để khám phá thêm một chút. Trong một số trường hợp (chẳng hạn như thông báo cho người dùng khi một thao tác đã hoàn thành thành công), biểu tượng dấu chấm than trông có vẻ sai. Hãy so sánh:

Đôi khi biểu tượng ! không phải là sự lựa chọn tốt nhất

Hộp thoại được tạo bởi lệnh:
Call MessageBox(“Processing Complete!”, “Friendlier Dialog”, vbInformation)

Thân thiện hơn nhiều !

Khi bạn cần cho người dùng biết rằng điều gì đó thực sự tồi tệ đã xảy ra:
Call MessageBox(“Something really bad happened..!”, “Error”, vbCritical)

Đảm bảo sẽ được chú ý !

Cách khác để sử dụng hộp thoại thông báo là gọi hàm MsgBox. Điều này có thể được sử dụng để yêu cầu người dùng trả lời, theo cách tương tự như hàm Ask của MapBasic.

Hộp thoại Ask điều gì đó với tất nhiều không gian trống ?

Thay thế bằng một hộp thông báo Windows tiêu chuẩn như sau:

iResponse = MsgBox(“Would you like to continue?”, “Messagebox with two buttons”, vbYesNo + vbQuestion + vbDefaultButton1)
If iResponse = vbYes Then
‘ User clicked yes
ElseIf iResponse = vbNo Then
‘ User clicked no
End If

Đoạn mã trên trình bày cách kết hợp các thuộc tính hộp thoại:
vbYesNo + vbQuestion + vbDefaultButton1
và làm thế nào giá trị được trả về bởi hộp thoại có thể được kiểm tra đối với các hằng số vbYes và vbNo để xác định phản hồi của người dùng. Các tùy chọn xâu chuỗi lại với nhau cho phép các hộp thoại rất linh hoạt, thân thiện với người dùng. Một lần nữa, kết quả trông đẹp hơn (và chuyên nghiệp hơn) sau đó là hàm MapBasic tích hợp:

Sử dụng hộp thoại để đặt câu hỏi

Một thay đổi nhỏ đơn giản mà bạn có thể thực hiện đối với các chương trình MapBasic của mình để làm cho chúng thân thiện hơn với người dùng một chút.

Bình luận bằng Facebook Comments

MẠNG XÃ HỘI

1,010ThíchThích
167Đăng kýĐăng Ký

TOOL PXTmap.com

BÀI VIẾT LIÊN QUAN

Hàm FileOpenDlg() trong MapBasic

Hàm FileOpenDlg() không thực sự mở tệp, thay vào đó hàm cung cấp cho người dùng tùy chọn mở tệp. Hàm này...

Hàm FileSaveAsDlg() trong MapBasic

Giống như hàm FileOpenDlg(), FileSaveAsDlg() có bốn đối số chuỗi: đường dẫn mặc định, tên mặc định, loại tệp và dấu nhắc...

Lấy danh sách thư mục & thư mục con bằng Mapbasic và Windows API

Hàm GetFileList mà bạn có thể sao chép vào Project của MapBasic (lưu ý: cần sao chép các phần: delarations, type, defines…)

Bài 3: Hộp thoại tiêu chuẩn và tùy chỉnh trong MapBasic

Nếu bạn tìm kiếm Dialog Statement trong MapBasic Help, bạn sẽ thấy mục đích của nó là tạo các hộp thoại...