delphi的MessageBox


Application.MessageBox 是 TApplication 的成員函數,宣告如下:
function TApplication.MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

引數:
    1. Text:要顯示的訊息
    2. Caption:訊息視窗的標題列文字
    3. Flags:訊息旗標
    3.1. 可指定訊息視窗上的圖示
    3.2. 可指定訊息視窗出現的按鈕
    3.3. 可指定預設Focus在哪一個按鈕
    3.4. 可指定是否 Modal
    3.5. 其他

引數說明:
Text、Caption 引數為 PCahr 型態,字串型態的變數可用 PChar()
轉換,若直接傳入一個字串的話,就不用轉型。
例如:
var s: string;
....
s := '存檔失敗';
Application.MessageBox(PChar(s), '錯誤', MB_ICONERROR);

Flag 引數為 Longint 型態,可用的傳入值有:
1. 指定訊息視窗上的圖示
    1.1 MB_ICONEXCLAMATION 或 MB_ICONWARNING
        出現「黃三角形內有一個驚嘆號」圖示
    1.2 MB_ICONINFORMATION 或 MB_ICONASTERISK
        出現「白色橢圓內有一個藍色小寫 i」圖示
    1.3 MB_ICONQUESTION
        出現「問號」圖示
    1.4 MB_ICONSTOP 或 MB_ICONERROR 或 MB_ICONHAND
        出現「紅色X」圖示

2. 指定訊息視窗出現的按鈕
    2.1 MB_ABORTRETRYIGNORE
        出現「Abort」「Retry」「Ignore」三個按鈕
    2.2 MB_OK
        出現「Ok」按鈕,為預設值。
    2.3 MB_OKCANCEL
        出現「Ok」「Cancel」兩個按鈕
    2.4 MB_RETRYCANCEL
        出現「Retry」「Cancel」兩個按鈕
    2.5 MB_YESNO
        出現「Yes」「No」兩個按鈕
    2.6 MB_YESNOCANCEL
        出現「Yes」「No」「Cancel」三個按鈕

3. 可指定預設Focus在哪一個按鈕
    3.1 MB_DEFBUTTON1
        指定focus在左邊第一個按鈕,這是預設值。
    3.2 MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4
        以此類推,指定focus在左邊第二、三、四個按鈕

4. 可指定是否 Modal
    4.1 MB_APPLMODAL        
        對於應用程式而言,是 modal form
    4.2 MB_SYSTEMMODAL
        對於作業系統而言,是 modal form
    4.3 MB_TASKMODAL
        對於 task 而言,是 modal form
        一般來說,這跟 MB_APPLMODAL 是等效的,但是當應用程式中的所有
    form 都隱藏的時候,就必須使用這個,才能達到 modal 的目的

5. 其他
    5.1 MB_TOPMOST
        將訊息視窗提至最前面
    5.2 MB_RIGHT
        將訊息文字向右對齊

在一個 Flag 要指定這麼多的東西,要如何使用呢?
只要把要用的引數組合 or 起來就可以了。例如:

Application.MessageBox(PCahr(sMsg), PChar(sCap), MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2)
這樣會出現「問號」圖示,「Yes」「No」兩個按鈕,而且 focus 在 No 按鈕上

回傳值:
    1. IDABORT:使用者按了「Abort」按鈕
    2. IDCANCEL:使用者按了「Cancel」按鈕
    3. IDIGNORE:使用者按了「Ignore」按鈕
    4. IDNO:使用者按了「No」按鈕
    5. IDOK:使用者按了「Ok」按鈕
    6. IDRETRY:使用者按了「Retry」按鈕
    7. IDYES:使用者按了「Yes」按鈕

順帶一提,按鈕上的文字是會隨著作業系統的語系而改變的,用中文版的 Windows,按鈕上的文字就出現中文。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章