參考:http://blog.itpub.net/8432156/viewspace-924843/
更為詳細的內容請參見:http://blog.csdn.net/akof1314/article/details/6256952
以下是四種方法的簡介,要想去准確的使用,請參考Delphi的幫助手冊,里面准確的提到了怎么調用、有什么函數、會會出現什么效果
在Delphi中,提供模式化對話框的方法很多,現對幾種比較常用的方法做如下比較:
1) 直接調用Windows API 函數MessageBox
該方法一般情況下使用正常,而且根據不同的操作系統將顯示相應的中文或英文按鈕標題。而在筆者曾經開發的系統中,偶爾會出現該函數沒有鎖定Handle所指的窗口的情況。通過觀察發現,當入口參數的窗口句柄是Application.MainForm的窗口句柄時,沒有出現類似情況。因此,建議大家慎用。
2) 調用Delphi提供的函數MessageDlg
該方法的不足之處是,對話框的按鈕標題是英文。
3) 調用Delphi提供的過程ShowMessage
該方法默認將應用程序的標題作為對話框的標題,並且僅僅是信息提示框,不太靈活。
ShowMessage的聲明有兩種
procedure ShowMessage(const Msg: WideString); overload; procedure ShowMessage(const Msg: WideString; Params: array of const); overload;
4) 調用函數Application.MessageBox
強力推薦使用該方法。該方法的使用效果與Windows API 函數MessageBox完全相同,並且不會出現有時沒有鎖定當前活動窗口的情況。
例如:
Aplication.MessageBox( '插入成功', '成功', MB_OK + MB_ICONEXCLAMATION);
MessageBox的聲明如下
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
其彈出框效果如下