如何构造一个能接收位数字的输入框
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix ArticleMetaData) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Fix categories) |
||
| Line 1: | Line 1: | ||
| − | [[Category:Lang-Chinese]][[Category:Symbian C++]] | + | [[Category:Lang-Chinese]][[Category:Symbian C++]][[Category:General Programming]][[Category:S60 1st Edition]][[Category:S60 2nd Edition (initial release)]][[Category:S60 2nd Edition FP1]][[Category:S60 2nd Edition FP2]][[Category:S60 2nd Edition FP3]] |
{{ArticleMetaData <!-- v1.2 --> | {{ArticleMetaData <!-- v1.2 --> | ||
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] --> | |sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] --> | ||
Latest revision as of 08:52, 8 August 2012
文章信息
详细描述:
我想向用户提供一个输入框,用户可以输入15位数字。我现在使用
CAknTextQueryDialog,因为CAknNumberQueryDialog虽然能接收数字输入,但不能满足我的位数要求。
如果使用CAknTextQueryDialog虽然可以输入足够15位字符,但很难保证用户输入的就是数字。
请问有没有方法提供一个能接收多位数字的输入框?
解决方案
可以通过指定Edwin editor的flags标记来限定用户的输入,输入对话框的资源看起来如下:
DLG_LINE
{
type=EEikCtEdwin;
id=EMyQuery;
control=EDWIN { maxlength=15; };
}
...
void CTestDlgDialog::PrepareLC(TInt aResourceId)
{
CEikDialog::PrepareLC( aResourceId );
// Dialog base class can be CAknDialog
//CAknDialog::PrepareLC( aResourceId );
// Pick up the Editor control from the dialog
CEikEdwin* control = static_cast<CEikEdwin*>(ControlOrNull(EMyQuery));
// Set the input mode
control->SetAknEditorInputMode(EAknEditorNumericInputMode);
// Restrict the other input modes
control->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode);
}
上面的示例提供给用户一个可以输入足够位数数字的对话框。 但是它也允许用户输入"*#pw+"这样的字符——通过使用"*"或 "#"键,我们可以监控用户的按键输入来避免用户输入这些字符。 还可以显示一个警告框提示用户的非法输入。

