Delphi提供两种内部对话框,信息对话框(如Showmessage、Showmessagefmt)和输入对话框(如Inputbox)。下面分别一一讲解。
一、信息对话框使用过程Showmessage、Showmessagefmt、Messagedlg和Messagedlgpos。
Showmessage过程显示一个最简单的对话框,其语法格式为:
Showmessage(信息内容);
说明:SHOWMESSAGE过程显示的对话框以应用程序的执行文件名作为标题,对话框只含有一个OK按钮,单击该按钮对话框即关闭并返回。
例如:showmessage('我爱Delphi!!')。
Showmessagefmt语法格式为:
showmessagefmt(信息内容,参数组);
说明:此过程与上一个过程其本相同,只是参数多了格式化的字符。
例:showmessagefmt('%s今年%d岁了!',[edit1.text,strtoint(edit2.text)])。
%s的内容为edit1.text。
%d的内容为edit2.text。
比如:Showmessagefmt('%s今年%d岁了!',['伟伟',21]),弹出对话框“伟伟今年21岁了!”。
Messagedlg与 Messagedlgpos
这两个函数可以显示一个信息对话框,并等待用户的响应。
Messagedlg函数
语法格式为:变量名:=MESSAGEDLG(信息内容,类型,按钮组,HELPCTX);
说明:
信息内容是显示在对话框中的信息.
类型是对话框的类型,其取值有:
mtwarning含有感叹号的警告对话框.
Mterror含有红色叉符号的错误对话框.
Mtinfomation含有蓝色I符号的信息对话框.
Mtconfirmation含有绿色?号的确认对话框
Mtcustiom不含图标的一般对话框,对话框的标题是程序的名称.
按钮组指定对话框中出现的按钮组,其中出现的按钮与参数有:
MBYES YES按钮,函数返回值为:6。
MBNO NO按钮,函数返回值为:7。
MBOK OK按钮,函数返回值为:
MBCANCEL CANCEL按钮,函数返回值为:2。
MBHELP HELP按钮。
MBABORT ABORT按钮,函数返回值为:3。
MBRETRY RETRY按钮,函数返回值为:4。
MBIGNORE IGNORE按钮,函数返回值为:5。
MBALL ALL按钮,函数返回值为:8。
MBNOTOALL NOTOALL按钮,函数返回值为:9。
MBYESTOALL YESTOALL按钮,函数返回值为:10。
按钮组可以组成某种形式,如[MBYES,MBNO]表示对话框中出现两个按钮:”YES”和”NO”。也可以常量形式如MBOKCANCEL表示对话框中出现两个按钮:”OK”和”CANCEL”。
举个例子,如密码框:
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
if edit1.text='hqw' then
showmessage('密码正确,欢迎进入!')
else
begin
x:=messagedlg('密码错误,请重新输入!',mterror,[mbyes,mbno],0);
if x=6 then //x为6即代表用户点击的是确定按扭。
begin
edit1.text:='';//清空。
edit1.SetFocus;//设置焦点。
end
else
close;
end;
end;
Messagedlgpos函数
调用MESSAGEDLGPOS函数,可以屏幕的指定位置显示信息对话框,其语法格式为:
变量=MESSAGEDLGPOS(信息内容,类型,按钮组,,HELPCTX,X,Y);
它比MESSAGEDLG只是多了一项功能,即具有X,Y显示位置坐标。
二、输入对话框使用函数Inputbox和Inputquery函数
Inputbox的作用为显示一个输入对话框。
其格式为:变量:=INPUTBOX(对话框信息,信息内容,默认内容);
对话框信息为指定对话框的标题。
信息内容为指定在对话框上出现的文本。
默认内容为在出现对话框时自动出现的输入内容。
Inputquery与Inputbox相似只出现一个输入框。只是对CANCEL按钮(退出事件)另作处理,将返回一个布尔值。
其格式为:变量:=INPUTQUERY(对话框标题,信息内容,字符串变量);
在出现对话框时如果单击OK输入框中的值将赋值到变量中,并且函数返回True;若用户单击Cancel按钮,变量值不变并返回False,可以根据返回值的不同作出判断。
举个例子,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
x:=strtoint(inputbox('提示','请输入求和值','0'));
if x=strtoint(edit1.Text)+strtoint(edit2.Text) then
edit3.Text:='正确'
else
edit3.Text:='错误';
end;
运行之后的如下图: