龙空技术网

如何实现在DeWeb中弹出对话框?

碧树西风 398

前言:

当前看官们对“确认框弹出”都比较关注,大家都想要剖析一些“确认框弹出”的相关知识。那么小编同时在网络上网罗了一些有关“确认框弹出””的相关知识,希望咱们能喜欢,同学们一起来学习一下吧!

在DeWeb中弹出对话框有以下几种方式:

1、dwShowMessage (消息框)

功能:弹出一个对话框,点击“OK”后继续

函数:

procedure dwShowMessage(AMsg:String;AForm:TForm);

参数如下:

(1)AMsg , 字符串型,为拟显示的内容字符串

(2)AForm, 窗体类型,一般为self

代码:

procedure TForm1.Button1Click(Sender: TObject);begin    dwShowMessage('Hello!',self);end;

效果:

2、dwShowMsg (支持自定义的消息框)

功能:弹出一个对话框,点击确定按钮后继续。

是dwShowMessage的升级版,区别在于:

(1)支持自定义标题;

(2)支持自定义按钮Caption

(3)消息内容支持HTML字符

函数:

procedure dwShowMsg(AMsg,ACaption,AButtonCaption:String;AForm:TForm);

参数如下:

(1)AMsg , 字符串型,为拟显示的内容字符串,支持HTML字符

(2)ACaption,窗体标题

(3)AButtonCaption,确定按钮的标题

(4)AForm, 窗体类型,一般为self

代码:

procedure TForm1.Button2Click(Sender: TObject);begin    dwShowMsg('<b>H</b>e<i>ll</i>o!','我的标题','我确定',self);end;

效果:

3、dwMessage (自动消失的带样式消息框)

功能:弹出一个对话框,3秒后自动消失,支持多种效果

函数:

procedure dwMessage(AMessage,AType:String;AForm:TForm);

参数如下:

(1)AMsg , 字符串型,为拟显示的内容字符串

(2)AType,字符串型,为拟显示弹框的类型,可以为success/info/warning/error

(3)AForm, 窗体类型,一般为self

代码:

procedure TForm1.Button3Click(Sender: TObject);begin    dwMessage('Hello!','success',self);end;

效果:

4、Panel__modal (用 Panel 模拟的带遮罩消息框)

使用:

在界面上放置一个Panel,设置其HelpKeyword为modal

使用时,直接设置Panel的Visible即可。

Visible 为 True 时显示,为 False 时隐藏

显示时,系统会自动先显示一个遮罩层,Panel自动左右居中,顶部与top值相等。

优点:开发速度快,与原背景窗体的数据交互非常方便;

缺点:需要在Panel中增加关闭按钮、标题栏等

效果:

5、Panel__popup (用 Panel 模拟的不带遮罩消息框)

使用:

在界面上放置一个Panel,设置其HelpKeyword为popup

使用时,直接设置Panel的Visible即可。

Visible 为 True 时显示,为 False 时隐藏

显示时,系统不显示遮罩层,Panel左边距和left相等,顶部与top值相等。

点击空白处自动消失

优点:开发速度快,与原背景窗体的数据交互非常方便;

缺点:需要在Panel中增加标题栏等

效果:

6、Form (用 TForm 模拟的带遮罩消息框)

假定拟弹出的窗体为form2

(1)在form2的声明放置到Form1的Public中

(2)如果在Form1中弹出form2窗体,需要执行如下以下代码

procedure TForm1.Button6Click(Sender: TObject);begin    if Form2 = nil then begin        //创建FORM        Form2           := TForm2.Create(self); //括号内必须将新窗体的Parent设置为self        //设置Parent        Form2.Parent    := self; //必须将新窗体的Parent设置为self        //        DockSite        := True;    end;    //弹出    dwShowModalPro(self,Form2);end;

优点:可以根据自己的需要定制;

缺点:使用相对麻烦;与背景窗体的数据交互相对麻烦,需要通过Form1的Public中的变量实现

效果:

7、dwMessageDialog (弹出式确认框)

函数:

procedure dwMessageDlg(AMsg,ACaption,confirmButtonCaption,cancelButtonCaption,AMethedName:String;AForm:TForm);

其中:

(1)AMsg:消息内容

(2)ACaption:消息框标题

(3)confirmButtonCaption:确定按钮标题

(4)cancelButtonCaption:取消按钮标题

(5)AMethedName:返回结果后触发Form的OnStartDock中的事件标志

(6)AForm:当前窗体,一般可以使用self

dwMessageDlg没返回值,所以不能在当前函数/过程中处理,需要等结果返回后会自动激活Form的OnStartDock函数,

所以需要在Form的OnStartDock函数中添加事件,在事件中通过以下取得前期拟触发的事件标志,对应函数中的AMethedName

dwGetProp(Self,'interactionmethod');

通过类似以下得到返回的结果,为'1'时表示为"确定",否则为"取消"

dwGetProp(Self,'interactionvalue');

弹出代码:

procedure TForm1.Button7Click(Sender: TObject);begin    //弹出一个确认框    dwMessageDlg('确定要使用DeWeb吗?','我的标题','我确定','我取消','query_deweb',self);end;

用户选择后事件代码:

procedure TForm1.FormStartDock(Sender: TObject; var DragObject: TDragDockObject);var    sMethod     : string;    sValue      : string;begin    sMethod     := dwGetProp(Self,'interactionmethod');    sValue      := dwGetProp(Self,'interactionvalue');    //    if sMethod = 'query_deweb' then begin        if sValue = '1' then begin            Label2.Caption  := '选择使用DeWeb';        end else begin            Label2.Caption  := '再等等看';        end;    end;end;

效果:

8、dwInputQuery (弹出式输入框)

函数:

procedure dwInputQuery(AMsg,ACaption,ADefault,confirmButtonCaption,cancelButtonCaption,AMethedName:String;AForm:TForm);

其中:

(1)AMsg:消息内容

(2)ACaption:消息框标题

(3)ADefault:输入框的默认值

(4)confirmButtonCaption:确定按钮标题

(5)cancelButtonCaption:取消按钮标题

(6)AMethedName:返回结果后触发Form的OnStartDock中的事件标志

(7)AForm:当前窗体,一般可以使用self

dwInputQuery没返回值,所以不能在当前函数/过程中处理,需要等结果返回后会自动激活Form的OnStartDock函数,

所以需要在Form的OnStartDock函数中添加事件,在事件中通过以下取得前期拟触发的事件标志

dwGetProp(Self,'interactionmethod');

通过类似以下得到返回的结果,为输入的内容。

dwGetProp(Self,'interactionvalue');

弹出代码:

procedure TForm1.Button8Click(Sender: TObject);begin    dwInputQuery('你使用的Delphi版本?','D Version','10.4.2','OK','cancel','query_version',self);end;

用户选择后事件代码(包含前面处理dwMessageDlg的代码):

procedure TForm1.FormStartDock(Sender: TObject; var DragObject: TDragDockObject);var    sMethod     : string;    sValue      : string;begin    sMethod     := dwGetProp(Self,'interactionmethod');    sValue      := dwGetProp(Self,'interactionvalue');    //    if sMethod = 'query_deweb' then begin        if sValue = '1' then begin            Label2.Caption  := '选择使用DeWeb';        end else begin            Label2.Caption  := '再等等看';        end;    end else if sMethod = 'query_version' then begin        Label3.Caption  := sValue;    end;end;

效果:

标签: #确认框弹出