Delphi 7中的四種訊息框

2021-08-25 19:41:15 字數 3394 閱讀 1714

1.showmessage 顯示乙個帶」ok」按鈕的訊息框

使用這個函式可以顯示乙個簡單的帶」ok」按鈕的訊息框,訊息框的標題是應用程式的標題名,引數msg字串顯示在訊息框上。其原始碼如下:

procedure showmessage(const msg: string);

begin

showmessagepos(msg, -1, -1);

end;

可以看到它呼叫了showmessagepos函式,我們觀察下面的**,發現跟showmessage很有關係,原始碼如下:

procedure showmessagefmt(const msg: string; params: array of const);

begin

showmessage(format(msg, params));

end;

procedure showmessagepos(const msg: string; x, y: integer);

begin

messagedlgpos(msg, mtcustom, [mbok], 0, x, y);

end;

showmessagefmt跟showmessage類似,只是showmessagefmt引數是帶格式化的字串。而它們最終都呼叫showmessagepos,這是在指定的位置顯示訊息框,顯示出來的效果還是跟showmessage一樣,其引數x、y座標為-1的話表示出現在螢幕中間,其實現呼叫了messagedlgpos,這跟messagedlg又有什麼關係,先看下面介紹messagedlg。

2.messagedlg 在螢幕中間顯示帶返回值的可自定義訊息框

使用這個函式可以顯示乙個帶圖示、多種組合按鈕、幫助id,並且有返回值的訊息框,其第乙個引數msg是訊息框的顯示內容,第二個引數dlgtype為訊息框型別,以圖示形式顯示在訊息框左側,其取值範圍如下:

mtwarning //帶黃色感嘆號的警告圖示,標題是warning

mterror //帶紅色叉的錯誤圖示,標題是error

mtinformation //帶藍色「i」符號的提示圖示,標題是information

mtconfirmation //帶綠色問號的詢問圖示,標題是confirmation

mtcustom //不帶圖示,訊息框標題是應用程式的標題名稱

第三個引數buttons是出現在訊息框上的按鈕,可以是單個按鈕,也可以是組合按鈕,其取值範圍如下:

mbyes //按鈕』yes』(預設都是英文,不方便使用)

mbno //按鈕』no』

mbok //按鈕』ok』

mbcancel //按鈕』cancel』

mbabort //按鈕』abort』

mbretry //按鈕』retry』

mbignore //按鈕』ignore』

mball //按鈕』all』

mbnotoall //按鈕』no to all』

mbyestoall //按鈕』yes to all』

mbhelp //按鈕』help』

也可以是如下的組合按鈕:

mbyesnocancel //mbyes, mbno, and mbcancel(預設都是英文,不方便使用)

mbyesnoallcancel //mbyes, mbyestoall, mbno, mbnotoall, and mbcancel

mbokcancel //mbok and mbcancel

mbabortretryignore //mbabort, mbretry, and mbignore

mbabortignore //mbabort, mbignore

第四個引數helpctx是幫助id,是在訊息框按「help」按鈕或按f1出現的幫助文件,若無需幫助的話,設定為0即可。返回值是使用者按下了訊息框上的按鈕,所返回的值,其值與訊息框上的各種按鈕分別對應,如下所示:

mbok //mrok

mbcancel //mrcancel(訊息框右上角的」關閉「按鈕也是返回這個值)

mbyes //mryes

mbno //mrno

mbabort //mrabort

mbretry //mrretry

mbignore //mrignore

mball //mrall

mbnotoall //mrnotoall

mbyestoall //mryestoall

下面是messagedlg原始碼:

function messagedlg(const msg: string; dlgtype: tmsgdlgtype;

buttons: tmsgdlgbuttons; helpctx: longint): integer;

begin

result := messagedlgposhelp(msg, dlgtype, buttons, helpctx, -1, -1, 」);

end;

發現其下面還有兩個類似的函式,它們原始碼如下:

function messagedlgpos(const msg: string; dlgtype: tmsgdlgtype;

buttons: tmsgdlgbuttons; helpctx: longint; x, y: integer): integer;

begin

result := messagedlgposhelp(msg, dlgtype, buttons, helpctx, x, y, 」);

end;

messagedlg(『這是messagedlg訊息框』, mtcustom, [mbok], 0);

if messagedlg(『這是messagedlg訊息框』, mtwarning, mbokcancel, 0) = mrok then

begin

//···

end;

messagebox(0, 『這是messagebox訊息框』, 『標題』, mb_ok);

messagebox(handle, 『這是messagebox訊息框』, 『標題』, mb_ok);

case messagebox(handle, 『這是messagebox訊息框』, 『標題』, mb_yesnocancel + mb_iconstop + mb_defbutton3) of

idcancel:

begin

//···

end;

idyes:

begin

//···

end;

idno:

begin

//···

end;

end;

end;

執行結果如下:

Delphi 7 定義你自己的訊息

定義乙個訊息需要兩個步驟 1.宣告乙個訊息識別符號 2.宣告乙個訊息記錄型別 tmessage packed record msg cardinal case integer of0 wparam longint lparam longint result longint 1 wparamlo wo...

Delphi 7 中DBGrid的排序。

procedure tfrmtracereport.dbgrid1titleclick column tcolumn var sortfield,fieldtitle string begin sortfield column.field.fieldname fieldtitle column.ti...

關於delphi7的四捨五入

round 函式是銀行用的 採用了 四捨六入5留偶 網上找到了個實現方法 先乘1000,用trunc取整,除10取餘,餘數再取整,如果大於5,進製,小於5不進製。函式就好寫了 現在只寫乙個保留兩個小數的例子 用到的可以擴充套件一下 四捨五入 值 結果四捨五入保留兩位小數 function tfrmc...