问题来源
闲来无事,逛论坛问答,看到这样一个问题,觉得有意思,就自己尝试下。
这个功能其实是不难的,就是显示不同的数值时,对相应的布尔灯进行真假值操作就行了。但是我又想到了更有趣的玩法,能不能我输入一个自然数(位数不限),然后用数码管显示这个数呢?
那我们现在一个个来实现。
代码展示1
1、我们先展示数显管循环从0-9的变换功能的实现。
2、当我们运行程序时,左边前面板的数显控件就会从0-9一直循环播放。代码的关键就是在数值0-9的条件结构的分支中去自定义布尔灯的真假值。我这里布尔灯的标签名就是1-7,然后排布顺序见图中右侧的截图。
3、整体看来还是比较简单的,每个case分支的自定义输入是不可避免的,好像也没有一个规律可循。
代码展示2
1、我们来实现数码管显示输入的任意自然数,先不考虑小数和负数,或者读者们可以自己尝试编写代码。
2、可以看到我们输入123,运行程序后,显示数字控件以数码管的形式显示了"123";我们输入一个更大的自然数53248,运行程序后,显示数字控件依旧正确的显示了"53248",可以看下面的图。
3、我们将代码展示1中的数显管簇控件创建为簇数组;在输入自然数的时候,先将自然数转换成字符串,这样方便我们更快的知道数字的长度,并设置簇数组的显示元素的列个数。(我们并没有预设数组的显示长度)
4、 然后对自然数进行拆分,将每个位上的数字进行数显管显示变换,最后再合并成数组输出出来即可。
文末总结
我感觉这功能应该是没啥应用场景,囧,属于是高射炮打蚊子,或者说是故弄玄虚。如果真要这样浮夸的显示数字,我倒是推荐使用下面的图片枚举控件,把0-9的数字图片加入到图片枚举中,想显示哪个数直接切换就行,方便许多。
再不济,要不把控件和字体放大点,咱不受这个气,费啥功夫呀,嘻嘻。