Symbian 数据查询对话框

 

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

表-1 数据查询类型

 

 类

 类

 布局

 控件

 无格式文本 CAknTextQueryDialog EDataLayout EDWIN
 电话号码 CAknTextQueryDialog EPhoneLayout EDWIN
 PIN CAknTextQueryDialog EPinLayout SECRETED
 口令 CAknTextQueryDialog ECodeLayout SECRETED
 日期 CAknTimeQueryDialog EDateLayout DATE_EDITOR
 时间 CAknTimeQueryDialog ETimeLayout TIME_EDITOR
 持续期 CAknDurationQueryDialog EDurationLayout TIME_EDITR
 浮点行 CAknFloatingPointQueryDialog EFloatingPointLayout FLPTED
 多行 CAknMultiLineDataQueryDialog EAknMultiLineDataQueryLayout 根据使用而不同
 数字 CAknNumberQueryDialog ENumberLayout AVKON_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弹栈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值