UniSweetAlert是UniGUI后期版本新增的一个界面友好的消息提示和输入控件,是ShowMessageN的升级版,UniSweetAlert增加了更多的可控制属性。
属性介绍
1、AlertType:提示类型,分为atError、atSuccess、atInfo、atQuestion、atWarning五种类型,主要控制提示界面顶部的图标样式;
2、AllowEscapeKey:是否允许Esc键关闭提示界面;
3、AllowOutsideClick:是否允许点击提示框外部区域关闭提示界面;
4、Animation:动画;
5、CancellButtonText:取消按钮中文内容;
6、ConfirmButtonText:确认按钮中文内容;
7、FocusCancel:焦点定位到取消按钮上;
8、Images:关联的图标控件,提示框中上数第二个图标;
9、InputType:输入类型,有ltNone、ltFile、ltMail、ltSelect、ltPassword、ltRaido等多种类型;
10、InputValue:初始显示的输入内容;
11、ReverseButtons:反向顺序摆放按钮,“确认”“取消”变为“取消”“确认”;
12、ShowCancellButton:显示取消按钮;
13、ShowCloseButton:显示提示框右上角的关闭按钮;
14、ShowConfirmButton:显示确认按钮;
15、ShowLoaderOnConfirm:显示确认前的预处理过程;
16、Title:提示信息;
创建一个新项目,按照下图添加和摆放各个控件,分别设置UniComboBox1、UniEdit1~4的FieldLabel标签属性,为UniNativImageList1添加一个小图片,让UniSweetAlert1的Images设为UniNativeImageList1,让ImageIndex设为0。三个按钮分别代表不同的应用方法,点击“一般交互提示”按钮将弹出提示框,操作“确认”和“取消”按钮都将提示操作结果;点击“判断执行结果”按钮将弹出提示框,仅操作“确定”按钮有操作结果提示,操作“取消”按钮没有操作结果提示;点击“预处理后执行”按钮将弹出提示框,操作“确定”按钮后将经过一个执行时间后再返回执行结果提示。
5.32.2 主要代码main.pas
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, uniGUITypes, uniGUIAbstractClasses,
uniGUIClasses, uniGUIRegClasses, uniGUIForm, uniGUIBaseClasses, uniSweetAlert,
uniButton, uniImageList, uniEdit, uniCheckBox, uniMultiItem, uniComboBox;
type
TMainForm = class(TUniForm)
UniComboBox1: TUniComboBox;
UniCheckBox1: TUniCheckBox;
UniCheckBox2: TUniCheckBox;
UniEdit1: TUniEdit;
UniEdit2: TUniEdit;
UniCheckBox3: TUniCheckBox;
UniCheckBox4: TUniCheckBox;
UniEdit3: TUniEdit;
UniButton1: TUniButton;
UniButton2: TUniButton;
UniSweetAlert1: TUniSweetAlert;
UniNativeImageList1: TUniNativeImageList;
UniCheckBox5: TUniCheckBox;
UniButton3: TUniButton;
UniEdit4: TUniEdit;
procedure UniButton1Click(Sender: TObject);
procedure UniButton2Click(Sender: TObject);
procedure UniButton3Click(Sender: TObject);
procedure UniSweetAlert1Confirm(Sender: TObject);
procedure UniSweetAlert1PreConfirm(Sender: TObject; var Result: Boolean;
var ErrorString: string);
procedure UniSweetAlert1Dismiss(Sender: TObject;
const Reason: TDismissType);
private
procedure ConfigSweetAlert(const ShowLoader: Boolean = False);//添加SweetAlert属性配置函数
{ Private declarations }
public
{ Public declarations }
end;
function MainForm: TMainForm;
implementation
{$R *.dfm}
uses
uniGUIVars, MainModule, uniGUIApplication;
function MainForm: TMainForm;
begin
Result := TMainForm(UniMainModule.GetFormInstance(TMainForm));
end;
1、UniSweetAlert属性配置
procedure TMainForm.ConfigSweetAlert(const ShowLoader: Boolean = False);
begin
with UniSweetAlert1 do
begin
AlertType := TAlertType(UniComboBox1.ItemIndex);//设置提示类型
AllowEscapeKey := UniCheckBox1.Checked;//是否允许按ESC
AllowOutsideClick := UniCheckBox2.Checked;//是否允许外部点击
CancelButtonText := UniEdit1.Text;//取消按钮的中文内容
ConfirmButtonText := UniEdit2.Text;//确认按钮的中文内容
ShowCancelButton := UniCheckBox3.Checked;//是否显示取消按钮
ShowCloseButton := UniCheckBox4.Checked;//是否显示关闭按钮
ShowLoaderOnConfirm := ShowLoader;//是否确认前等待
Title := UniEdit3.Text;//提示信息
if UniCheckBox5.Checked then
begin
InputType := ItText;
InputValue := UniEdit4.Text;
end
else
InputType := ItNone;
end;
end;
2、“一般交互提示”按钮事件
procedure TMainForm.UniButton1Click(Sender: TObject);
begin
ConfigSweetAlert;
UniSweetAlert1.Show;//显示提示
end;
2、“判断执行结果”按钮事件
procedure TMainForm.UniButton2Click(Sender: TObject);
begin
ConfigSweetAlert;
if UniSweetAlert1.Execute then//根据执行结果进行提示
ShowMessageN('执行结果:成功! ' + UniSweetAlert1.InputResult);
end;
3、“预处理后执行”按钮事件
procedure TMainForm.UniButton3Click(Sender: TObject);
begin
ConfigSweetAlert(True);
UniSweetAlert1.Show;
end;
4、UniSweetAlert“确认”按钮事件
procedure TMainForm.UniSweetAlert1Confirm(Sender: TObject);
begin
if UniCheckBox5.Checked then
begin
ShowMessageN('确认:你输入了 ' + UniSweetAlert1.InputResult);
end
else
begin
ShowMessageN('确认');
end;
end;
5、UniSweetAlert“取消”按钮事件
procedure TMainForm.UniSweetAlert1Dismiss(Sender: TObject;
const Reason: TDismissType);
begin
case Reason of
dtOverlay: ShowMessageN('驳回原因:覆盖');
dtCancel: ShowMessageN('驳回原因:取消');
dtClose: ShowMessageN('驳回原因:关闭');
dtESC: ShowMessageN('驳回原因:按了ESC');
dtTimer: ShowMessageN('驳回原因:超时');
end;
end;
6、UniSweetAlert“预处理”按钮事件
procedure TMainForm.UniSweetAlert1PreConfirm(Sender: TObject;
var Result: Boolean; var ErrorString: string);
begin
Sleep(2000); // 模拟等待!
Result := True;
ShowMessageN('确认:你输入了 ' + UniSweetAlert1.InputResult);
end;
initialization
RegisterAppFormClass(TMainForm);
end.