delphi中Application.MessageBox函數用法詳解


Application.MessageBox是TApplication的成員函數,聲明如下:
functionTApplication.MessageBox(constText,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或其他string類型的變量,改為PCahr型態,字串型態的變數可用PChar()
轉換,若直接傳入一個字串的值話,就不用轉型。
例如:
vars:string;
....
s:='存檔失敗'; Application.MessageBox(PChar(s),'錯誤',MB_ICONERROR); 
//窗口標識可以含多個,例如下面表示帶問號,同時含有yes和no兩個按鈕
Application.MessageBox('要保存文件內容嗎?', '保存', MB_YESNO or MB_ICONQUESTION);

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

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

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

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

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

在一個Flag要指定這么多的東西,要如何使用呢?
只要把要用的引數組合or起來就可以了(或者用+號連接起來也可以)。例如:

Application.MessageBox(PCahr(sMsg),PChar(sCap),MB_YESNOorMB_ICONQUESTIONorMB_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」按鈕

結果處理示例:

Result := Application.MessageBox('要保存文件內容嗎?', '保存', MB_YESNO or MB_ICONQUESTION);
case Result of ID_YES: if SaveFile(False) then MakeNewDocument; ID_NO: MakeNewDocument; end

備注:按鈕上的文字是會隨着作業系統的語系而改變的,用中文版的Windows,按鈕上的文字就出現中文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM