1 前言
第八次记录一下如何使用TouchGFX Custom Container制作自定义的控件,本次以键盘为例。本节内容大部分使用Designer实现。这一节有些名词的命名做的不是太标准,还望大家不要介意。
2 CustomContainer
按照下图制作一个小键盘,这里为了简化只用了3个按键。灰色框内有一个文本框textArea_num,注意这个文本框不要用Autosize, 文本内容为通配符(注意查看Typographies里有没有写上0-9)。
接下来为custom container创建一个带参数的action,一个参数的trigger,前者用于本控件内,处理数字按键,后者用于触发其他控件的事件
为按键123设置交互,全部调用action且传递相应的参数
删除键,确认键调用虚函数
2 测试CustomContainer
分别实现action和两个按键的虚函数
编写测试函数
主函数里放一个我们的keyboard
3 编写运算规则
这里使用一个初值为0的long变量num。当按下一个数字时,num = num*10+value;当按下delete按键时候,num = num/10;为了不超过文本框wildchard缓冲区大小,再定义一个变量count用于记住输入了多少个数字。注意,输入的数字个数应该小于缓冲区大小减一,减一是因为文本内存放的是字符串,有字符串结束标志符占位。
void CustomContainer::NumPressedAction(int8_t value)
{
if (count < TEXTAREA_NUM_SIZE - 1)
{
num = num * 10 + value;
Unicode::snprintf(textArea_numBuffer, TEXTAREA_NUM_SIZE, "%d", num);
textArea_num.invalidate();
count++;
}
}
void CustomContainer::buttonDeletePressed()
{
if (count != 0)
{
num = num / 10;
Unicode::snprintf(textArea_numBuffer, TEXTAREA_NUM_SIZE, "%d", num);
textArea_num.invalidate();
count--;
}
}
删除,输入均工作正常
4 实现触发
在确认键的回调函数里直接触发,将num传输到外部即可
5 对触发做出反应
配置一个文本框用于接收键盘输入结果,为键盘设置交互,使事件发生时调用虚函数
接下来就轻车熟路了,
有问题请留言
.
.
.
——END