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...