我现在使用二种信息提示的方式,一种当然是使用Application.messageBox的方式,就是即时提示。
另一种就是将所有的错误和警告写在一起,适用于大批量数据的录入,一条条提示太麻烦了。
1 即时提示
我将Application.messageBox进行了封装,MessageBox的哪些参数太多了,哪个有时间去记。封装如下:
//普通提示
procedure MsgInfo(const strInfo,strTitle:String);
begin
Application.messageBox(Pchar(strInfo),Pchar(strTitle),MB_OK or MB_ICONINFORMATION or MB_DEFBUTTON1);
end;
//警告提示
procedure MsgWarning(const strInfo,strTitle:String);
begin
Application.messageBox(Pchar(strInfo),Pchar(strTitle),MB_OK or MB_ICONEXCLAMATION or MB_DEFBUTTON1);
end;
//错误提示
Procedure MsgWrong(const strInfo,strTitle:String);
begin
Application.messageBox(Pchar(strInfo),Pchar(strTitle),MB_OK or MB_ICONEXCLAMATION or MB_DEFBUTTON1);
end;
//确认提示 ,返回值IDYES为确认 ,IDNO为否,IDABort为没有足够的内存来显示提示信息
function MsgConfirm(const strInfo,strTitle:String):Integer;
begin
Result := Application.MessageBox(Pchar(StrInfo),Pchar(StrTitle),MB_YESNO or MB_ICONQuestion or MB_DEFBUTTON2);
end;
当然也可以按自己的想法再添加或修改了,附上MessageBox后面的Flags参数的意义:
MessageBox方法
对应对象:TApplication
声明:function MessageBox(Text,Caption:PChar;Flags:Word):Integer;
功能:MessageBox方法可以显示一个对话框,在对话框中包含了一条信息和一个及多个按钮。MessageBox方法是TApplication中的一个经常使用的方法,它包含了Windows API MessageBox函数。使用过Windows的朋友都看到过MessageBox,可以使用VB或Delphi来创建它们。以下是Flags允许的一些值的组合。
标 记 值 / 意 义
MB_ABORTRETRYIGNORE / 出现3个按钮:Abort,Retry,Ignore。
MB_APPLMODAL / 对于应用程序的信息框是模式的,即当返回到应用程序之前用户必须单击一个键,MB_APPLMODAL由缺少值设置,对应的行为可以使用MB_SYSTEMMODAL或MB_TASKMODAL来改变。
MB_DEFAULT_DESKTOP_ONLY / 信息框必须出现在缺少的桌面上,这个桌面是用户注册的桌面。
MB_DEFBUTTON1 / 信息框的第一个按钮是缺省的按钮。
MB_DEFBUTTON2 / 信息框的第二个按钮是缺省的按钮。
MB_DEFBUTTON3 / 信息框的第三个按钮是缺省的按钮。
MB_DEFBUTTON4 / 信息框的第四个按钮是缺省的按钮。
MB_HELP / 在信息框上添加一个Help按钮,当按F1或此按钮时可以引起Help事件。
MB_ICONASTERISK / 与MB_ICONFORMATION的相同。
MB_ICONERROR / 与MB_ICONHAND相同。
MB_ICONEXCLAMATION / 出现一个感叹号的图标。
MB_ICONHAND / 与MB_ICONSTOP相同。
MB_ICONINFORMATION / 出现一个小写的i图标。
MB_ICONQUESTION / 出现一个问号?的图标。
MB_ICONSTOP / 出现一个红色的叉子×的图标。
MB_ICONWARNING / 与MB_ICONEXCLAMATION的相同。
MB_OK / 信息框出现一个按钮,按钮标题是OK。
MB_OKCANCEL / 信息框出现两个按钮,按钮标题是OK和Cancel。
MB_RETRYCANCEL / 信息框出现两个按钮,按钮标题是Retry和Cancel。
MB_RIGHT / 信息框内的信息是向右对齐的。
MB_TRLREADING / 信息框内的文字对于Hebrew和Arabic系统来说是向右对齐的。
MB_SERVICE_NOTIFICATION / 允许信息框在一个没有被注册的桌面上显示。
MB_SETFORMEGROUND / 使信息框成为当前的窗口。
MB_SYSTEMMODAL / 此信息框不允许用户在它被关闭之前进行任何的其他操作,这个标记可以为十分重要的信息进行保留。
MB_TASKMODAL / 与MB_APPLMODAL相同。
MB_YESNO / 信息框有两个按钮,按钮标题是Yes和No。
MB_YESNOCANCEL / 信息框内有三个按钮,按钮标题是Yes,No和Canel。
对于此属性的返回值类型可见下表:
命名的返回值 / 返回数值 / 意义
IDABORT / 0 / 没有足够的内存空间来显示信息框。
IDABORT / 3 / 用户选择了Abort按钮功能。
IDCANCEL / 2 / 用户选择了Cancel按钮功能。
IDIGNORE / 5 / 用户选择了Ignore按钮功能。
IDNO / 7 / 用户选择了No按钮功能。
IDOK / 1 / 用户选择了OK按钮功能。
IDRETRY / 4 / 用户选择了Retry按钮功能。
IDYES / 6 / 用户选择了Yes按钮功能。
2 在窗体中给出提示信息
建立一个窗体,上面给出一个Memo控件来显示多行提示内容,下面给出三个按扭:确定,忽略,关闭。
窗体给两个整数属性:警告条数和错误条数。任务情况下关闭按扭可用,当错误条数=0时且警告条数>0时警告可用,当错误条数=0且警告条数=0时,确定按扭可用。另有一处AnsiString用来存储错误和警告信息。
调用该窗体时,每增加一种错误,则错误数加1,每增加一条警告则警告数加1,相应的显示信息则连接成一个字符串即可。