MessageBox中显示变量及实现换行

前言

总结下今天使用messageBox过程中解决的一些问题,共勉。

messageBox格式使用请参考:

delphi中Application.MessageBox函数用法详解

1、显示变量

直接上干货(代码):

vars:string;
....
s:='存档失败';
Application.MessageBox(PChar(s),'错误',MB_ICONERROR);

//窗口标识可以含多个,例如下面表示带问号,同时含有yes和no两个按钮

Application.MessageBox('要保存文件内容吗?', '保存', MB_YESNO or MB_ICONQUESTION);

进阶版:变量和字符混用

MessageBox(Handle,Pansichar('议价后应收,请核对!' +edtYJ.Text),'提示',MB_OKCANCEL);

2、换行

方式一:

MessageBox(Handle,Pansichar('议价后应收,请核对!'+ ''#13'' +edtYJ.Text),'提示',MB_OKCANCEL);

方式二:

MessageBox(Handle,Pansichar('议价后应收,请核对!'+#13#10 +edtYJ.Text),'提示',MB_OKCANCEL);

MessageBox中显示变量及实现换行插图
效果如图:

以上是个人总结所得,若有不当之处,请在评论中指出。

 

delphi中Application.MessageBox函数用法详解

function TApplication.MessageBox(const Text, 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 自变量为 PCahr 型态,字符串型态的变量可用 PChar()

转换,若直接传入一个字符串的话,就不用转型。

例如:

var s: string;
....
s := '存档失败';
Application.MessageBox(PChar(s), '错误', MB_ICONERROR);

Flag 自变量为 Longint 型态,可用的传入值有:

1. 指定讯息窗口上的图标

1.1 MB_ICONEXCLAMATION 或 MB_ICONWARNING

出现「黄三角形内有一个惊叹号」图示

1.2 MB_ICONINFORMATION 或 MB_ICONASTERISK

出现「白色椭圆内有一个蓝色小写 i」图示

1.3 MB_ICONQUESTION

出现「问号」图示

1.4 MB_ICONSTOP 或 MB_ICONERROR 或 MB_ICONHAND

出现「红色X」图示

2. 指定讯息窗口出现的按钮

2.1 MB_ABORTRETRYIGNORE

出现「Abort」「Retry」「Ignore」三个按钮

2.2 MB_OK

出现「Ok」按钮,为默认值。

2.3 MB_OKCANCEL

出现「Ok」「Cancel」两个按钮

2.4 MB_RETRYCANCEL

出现「Retry」「Cancel」两个按钮

2.5 MB_YESNO

出现「Yes」「No」两个按钮

2.6 MB_YESNOCANCEL

出现「Yes」「No」「Cancel」三个按钮

3. 可指定预设Focus在哪一个按钮

3.1 MB_DEFBUTTON1

指定focus在左边第一个按钮,这是默认值。

3.2 MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4

以此类推,指定focus在左边第二、三、四个按钮

4. 可指定是否 Modal

4.1 MB_APPLMODAL

对于应用程序而言,是 modal form

4.2 MB_SYSTEMMODAL

对于操作系统而言,是 modal form

4.3 MB_TASKMODAL

对于 task 而言,是 modal form

一般来说,这跟 MB_APPLMODAL 是等效的,但是当应用程序中的所有

form 都隐藏的时候,就必须使用这个,才能达到 modal 的目的

5. 其它

5.1 MB_TOPMOST

将讯息窗口提至最前面

5.2 MB_RIGHT

将消息正文向右对齐

在一个 Flag 要指定这么多的东西,要如何使用呢?

只要把要用的自变量组合 or 起来就可以了。例如:

Application.MessageBox(PCahr(sMsg), PChar(sCap), MB_YESNO or
MB_ICONQUESTION or MB_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」按钮

THE END