Symbian 数据查询对话框

数据查询对话框要求用户输入文本,确定后作相应的响应处理,用户可以输入的文本可以是文字、数字、电话号码、日期、时间、口令等。表-1列出了常用的数据查询的类型。

表-1 数据查询类型

布局

控件

无格式文本CAknTextQueryDialogEDataLayoutEDWIN
电话号码CAknTextQueryDialogEPhoneLayoutEDWIN
PINCAknTextQueryDialogEPinLayoutSECRETED
口令CAknTextQueryDialogECodeLayoutSECRETED
日期CAknTimeQueryDialogEDateLayoutDATE_EDITOR
时间CAknTimeQueryDialogETimeLayoutTIME_EDITOR
持续期CAknDurationQueryDialogEDurationLayoutTIME_EDITR
浮点行CAknFloatingPointQueryDialogEFloatingPointLayoutFLPTED
多行CAknMultiLineDataQueryDialogEAknMultiLineDataQueryLayout根据使用而不同
数字CAknNumberQueryDialogENumberLayoutAVKON_INTEGER_EDWIN

数据查询是一种基本的查询方式,它通过接受用户的数据输入来确定程序的执行流程。例如当程序要求保存数据时,通常要求用户输入保存数据的文件名,然后按用户输入的文件名保存数据。

在程序中,首先在资源文件中定义查询对话框。

RESOURCE DIALOG r_data_query_dialog
{
flags =EGeneralQueryFlags;
buttons =R_AVKON_SOFTKEYS_OK_CANCEL;
items=
{
DLG_LINE
{
type = EAknCtQuery;
id = 1;
control = AVKON_DATA_QUERY
{
layout = EDataLayout;
control = EDWIN
{
width = 20;
lines = 1;
maxlength = 20;
};
};
}
};
}

查询对话框资源定义了对话框的属性。

(1)flags。此处定义为EGeneralQueryFalgs,即通用标记。

(2)button。指定对话框使用的按键。此处的R_AVKON_SOFTKEYS_OK_CANCEL表示左键为OK,右键为Cancel。

(3)control。此处定义为AVKON_DATA_QUERY,这是查询对话框的控件。在control中规定了对话框的布局Layout,这里指定为EDataLayout,这是一种通用的数据布局方式。

在查询对话框中还定义了一个编辑器控件,在资源文件中定义为EDWIN,并指定了它的三个属性width(宽度)、lines(行数)和maxlength(最大长度)。资源文件定义好之后,在程序文件中就可以使用查询对话框。使用代码如下所示。

TBuf<20> fileName;
CAknTextQueryDialog* queryDialog =CAknTextQueryDialog::NewL(fileName);
CleanupStack::PushL(queryDialog);
HBufC* prompt = StringLoader::LoadLC(R_DATA_QUERY_PROMPT);
queryDialog->SetPromptL(*prompt);
CleanupStack::PopAndDestroy(prompt);
CleanupStack::Pop(queryDialog);
if(queryDialog->ExecuteLD(R_DATA_QUERY_DIALOG))
{
}

这里使用的是无格式的文本查询对话框,它的类为CAknTextQueryDialog。(1)句首先调用该类的NewL()函数建立对象,NewL()函数需要一个TBuf类型的描述符作为参数,该参数用于接受用户输入的数据,要求用户输入文件名。

作为对话框来说,(2)句将给用户一定的提示信息,以下这段代码将给查询对话框增加一个提示内容。

HBufC* prompt = StringLoader::LoadLC(R_DATA_QUERY_PROMPT);
queryDialog->SetPromptL(*prompt);
CleanupStack::PopAndDestroy(prompt);

提示的文本在资源文件中定义如下所示。

RESOURCE TBUF r_data_query_prompt
{
buf = "Inputfile name:";
}

定 义文本的方式为RESOURCE TBUF,该结构有一个参数buf,buf的值就是程序要定义的文本。最(3)句调用ExecuteLD执行对话框,如果用户选择确 定,ExecuteLD()函数返回ETrue;否则返回EFalse。这里没有给出具体的保存顾数据的代码,可以根据需要自行添加上去。另外需要说明的 一点是,由于ExecuteLD()函数有一个压栈的过程,所以在调用ExecuteLD()函数之前必须把queryDialog弹栈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值