MessageBox對話框是比較常用的一個資訊對話框,其不僅能夠定義顯示的資訊内容、資訊提示圖示,而且可以定義按鈕組合及對話框的标題,是一個功能齊全的資訊對話框資訊提示圖示,而且可以定義按鈕組合及對話框的标題,是一個功能齊全的資訊對框。
1、函數原型及參數
function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
hWnd:對話框父視窗句柄,對話框顯示在Delphi窗體内,可使用窗體的Handle屬性,否則可用0,使其直接作為桌面視窗的子視窗。
Text:欲顯示的資訊字元串。
Caption:對話框标題字元串。
Type:對話框類型常量。
該函數的傳回值為整數,用于對話框按鈕的識别。
2、類型常量
對話框的類型常量可由按鈕組合、預設按鈕、顯示圖示、運作模式四種常量組合而成。
(1)按鈕組合常量
MB_OK = $00000000; //一個确定按鈕
MB_OKCANCEL = $00000001; //一個确定按鈕,一個取消按鈕
MB_ABORTRETRYIGNORE = $00000002; //一個異常終止按鈕,一個重試按鈕,一個忽略按鈕
MB_YESNOCANCEL = $00000003; //一個是按鈕,一個否按鈕,一個取消按鈕
MB_YESNO = $00000004; //一個是按鈕,一個否按鈕
MB_RETRYCANCEL = $00000005; //一個重試按鈕,一個取消按鈕
(2)預設按鈕常量
MB_DEFBUTTON1 = $00000000; //第一個按鈕為預設按鈕
MB_DEFBUTTON2 = $00000100; //第二個按鈕為預設按鈕
MB_DEFBUTTON3 = $00000200; //第三個按鈕為預設按鈕
MB_DEFBUTTON4 = $00000300; //第四個按鈕為預設按鈕
(3)圖示常量
MB_ICONHAND = $00000010; //“×”号圖示
MB_ICONQUESTION = $00000020; //“?”号圖示
MB_ICONEXCLAMATION = $00000030; //“!”号圖示
MB_ICONASTERISK = $00000040; //“i”圖示
MB_USERICON = $00000080; //使用者圖示
MB_ICONWARNING = MB_ICONEXCLAMATION; //“!”号圖示
MB_IConERROR = MB_ICONHAND; //“×”号圖示
MB_ICONINFORMATION = MB_ICONASTERISK; //“i”圖示
MB_ICONSTOP = MB_ICONHAND; //“×”号圖示
(4)運作模式常量
MB_APPLMODAL = $00000000; //應用程式模式,在未結束對話框前也能切換到另一應用程式
MB_SYSTEMMODAL = $00001000; //系統模式,必須結束對話框後,才能做其他操作
MB_TASKMODAL = $00002000; //任務模式,在未結束對話框前也能切換到另一應用程式
MB_HELP = $00004000; //Help Button
3、函數傳回值
0 //對話框建立失敗
idOk = 1 //按确定按鈕
idCancel = 2 //按取消按鈕
idAbout = 3 //按異常終止按鈕
idRetry = 4 //按重試按鈕
idIgnore = 5 //按忽略按鈕
idYes = 6 //按是按鈕
idNo = 7 //按否按鈕
例子:messagebox(0,'沒有選擇播放類型','錯誤',MB_ICONEXCLAMATION );
–Application.MessageBox('MessageBox','警告',MB_ICONWARNING+MB_YesNo);
–MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel);
–MessageBox(Form1.Handle,'MessageBox','提示‘,MB_ICONINFORMATION+MB_OkCancel+MB_DEFBUTTON2);
— if MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel)= idOk then
begin
ShowMessage('Ok');
end;
————————————————————————–
MessageDlg用法
messageDlg, 是在對話框顯示消息,并等待使用者點選一個按鈕,然後傳回一個整數确定知道是那個按鈕.
原型:MessageDlg(const Msg: string; DlgType: TMsgDlgType;Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer
Msg:想要提示的文字
DlgType:對話框的類型
Buttons:對話框中的按鈕
HelpCtx:定義對話框的幫助螢幕,使用HelpCtx參數可以指定當使用者單擊Help按鈕或按F1鍵所彈出的幫助主題的幫助上下文ID,一般也用不上,用0,表示幫助主題為空。
對話框類型:
mtwarning——含有感歎号的警告對話框
mterror——含有紅色叉符号的錯誤對話框
mtinformation——含有藍色i符号的資訊對話框
mtconfirmation——含有綠色問号的确認對話框
mtcustom——不含圖示的一般對話框,對話框的标題是程式的名稱
按鈕組中的按鈕:
mbYes——mrYes或6
mbNo——mrNo或7
mbOk——mrOk或1
mbCancel——mrCancel或2
mbHelp——help按鈕
mbAbort——mrAbort或3
mbRetry——mrRetry或4
mbIgnore——mrIgnore或5
mbAll——mrAll或8
mbNoToAll——9
mbYesToAll——10
舉例:
procedure TForm1.Button1Click(Sender: TObject);
begin
Messagedlg('你确定嗎',mtWarning,[mbYES,mbNO],0);
MessageDlg('錯誤(1001)',mtError,[mbCancel],0);
end;
MessageDlg()資訊的漢化
Delphi中的常量都放在consts.pas中,修改它可以達到漢化的目的.如:
MessageDlg()顯示的視窗标題及其中的
按鈕标題都是英文,雖然不影響使用,但在一個中文軟體中總顯得有些不協調.
為此在consts.pas中查找以下内容:
"SMsgDlgWarning"
把
SMsgDlgWarning = 'Warning';
SMsgDlgError = 'Error';
SMsgDlgInformation = 'Information';
SMsgDlgConfirm = 'Confirm';
SMsgDlgYes = '&Yes';
SMsgDlgNo = '&No';
SMsgDlgOK = 'OK';
SMsgDlgCancel = 'Cancel';
SMsgDlgHelp = '&Help';
SMsgDlgHelpNone = 'No help available';
SMsgDlgHelpHelp = 'Help';
SMsgDlgAbort = '&Abort';
SMsgDlgRetry = '&Retry';
SMsgDlgIgnore = '&Ignore';
SMsgDlgAll = '&All';
SMsgDlgNoToAll = 'N&o to All';
SMsgDlgYesToAll = 'Yes to &All';
改成
SMsgDlgWarning = '警告';
SMsgDlgError = '錯誤';
SMsgDlgInformation = '提示';
SMsgDlgConfirm = '确認';
SMsgDlgYes = '是(&Y)';
SMsgDlgNo = '不(&N)';
SMsgDlgOK = '确定';
SMsgDlgCancel = '取消';
SMsgDlgHelp = '幫助(&H)';
SMsgDlgHelpNone = '沒有該幫助資訊';
SMsgDlgHelpHelp = '幫助';
SMsgDlgAbort = '放棄(&A)';
SMsgDlgRetry = '重試(&R)';
SMsgDlgIgnore = '忽略(&I)';
SMsgDlgAll = '全部(&A)';
SMsgDlgNoToAll = '全都不(&O)';
SMsgDlgYesToAll = '全都是(&A)';
然後重新編譯Consts.pas,把Consts.dcu
拷到delphi的lib和slib子目錄下,就OK啦!