找回密码
 加入
搜索
查看: 13875|回复: 40

[GUI管理] 做个输入器~[已解决]

 火... [复制链接]
发表于 2011-10-21 17:52:34 | 显示全部楼层 |阅读模式
本帖最后由 woeiwoei 于 2011-10-25 09:08 编辑



想做个 这样的工具,但是 第一个问题是  右边的格子怎么做?

我不想一个一个画呀。。大家有什么好的建议么?做完后 我贴源码上来。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-10-21 21:09:13 | 显示全部楼层
脑子中 瞬间闪过的想法是  变量加位移 批量生成按钮  也就是说下一个按钮的位置是上一个按钮的位置加宽度  全部是按钮的话就不用画格子了

只是一个想法   不知道有没有可行性
发表于 2011-10-21 23:01:22 | 显示全部楼层
本帖最后由 131738 于 2011-10-21 23:07 编辑

设置 Label 高度为 1 ,作为水平线,宽度为 1 作为垂直线,每格再放一个 Label ,瞎想的。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-10-21 23:29:32 | 显示全部楼层
Local $text = '+-×÷﹢﹣±/=≈≡≠∧∨∑∏∪∩∈⊙⌒⊥∥∠' & _
                '∽≌<>≦≧≮≯∧∨√ ﹙﹚[]﹛﹜∫∮∝∞⊙∏'
GUICreate('字符格子例子 By Afan', 400, 200)
GUISetBkColor(0xFFFFFF)
GUISetFont(11)

GUICtrlCreateLabel('', 90, 10, 302, 90)
GUICtrlSetBkColor(-1, 0xCBCED5)
GUICtrlSetState(-1, 128)

Local $aTxt = StringRegExp($text, '.', 3)
Local $_c = UBound($aTxt), $Label[$_c]
For $x = 1 To $_c
        $Label[$x - 1] = GUICtrlCreateLabel($aTxt[$x - 1], 92 + 25 * ($x - (Int(($x - 1) / 12) * 12 + 1)), _
                        12 + 22 * Int(($x - 1) / 12), 23, 20, 0x201)
Next

Local $LD = GUICtrlCreateLabel('', 160, 100, 80, 80, 0x201)
GUICtrlSetFont(-1, 50)
GUICtrlSetColor(-1, 0xCBCED5)

GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $Label[0] To $Label[$_c - 1]
                        GUICtrlSetData($LD, $aTxt[$msg - 4])
        EndSwitch
WEnd

评分

参与人数 9金钱 +228 贡献 +45 收起 理由
zcool321 + 21 太值得学习了~!~
happytc + 20
papapa314 + 25 + 10 秒!
kood481748 + 10 + 2 A版出品,必属精品
lynfr8 + 22 厉害、佩服

查看全部评分

发表于 2011-10-22 00:12:10 | 显示全部楼层
回复 4# afan

这代码写的太好了!Good!!
发表于 2011-10-22 00:20:16 | 显示全部楼层
afan的数学真的不错!
发表于 2011-10-22 11:24:52 | 显示全部楼层
顶afan,真是写的太棒了
发表于 2011-10-22 11:26:45 | 显示全部楼层
不错,学习一下哈
发表于 2011-10-22 13:18:21 | 显示全部楼层
A版真厉害,,学习了
发表于 2011-10-22 13:34:20 | 显示全部楼层
本帖最后由 131738 于 2011-10-22 13:45 编辑

回复 4# afan

调试分析了半天,还是看不出那格子是如何画的,能告知 0x201 是什么样式吗?

带边框 Label 需要 #include <GUIConstantsEx.au3> ,即使这样,做出的的是间隔方块,不能显示文字。。。

$aTxt = StringRegExp($text, '.', 3) 等效于 StringSplit  字符拆分吧?
发表于 2011-10-22 14:20:58 | 显示全部楼层
回复 10# 131738
貌似是$SS_CENTER+$SS_CENTERIMAGE
发表于 2011-10-22 17:44:39 | 显示全部楼层
回复 11# 3mile

谢谢!!!替换后效果相同!
发表于 2011-10-22 17:55:15 | 显示全部楼层
afan版主写的真好,还可以把格子里的字符当按钮使.
GUICreate('test', 400, 200)
GUISetBkColor(0xFFFFFF)

$a = 0

For $i = 20 To 180 Step 20
        GUICtrlCreateLabel('', 10, $a + $i, 380, 2)
        GUICtrlSetBkColor(-1, 0xCBCED5)
Next

For $i = 10 To 390 Step 380
        GUICtrlCreateLabel('', $i, 20, 2, 160)
        GUICtrlSetBkColor(-1, 0xCBCED5)
Next

For $i = 10 To 390 Step 20
        GUICtrlCreateLabel('', $i, 20, 2, 160)
        GUICtrlSetBkColor(-1, 0xCBCED5)
Next

Local $Label1 = GUICtrlCreateLabel("a", 15, 25, 10, 10, 0x201)
Local $Label2 = GUICtrlCreateLabel("f", 135, 25, 10, 10, 0x201)
Local $Label3 = GUICtrlCreateLabel("a", 235, 25, 10, 10, 0x201)
Local $Label4 = GUICtrlCreateLabel("n", 375, 25, 10, 10, 0x201)
Local $Label5 = GUICtrlCreateLabel("g", 15, 105, 10, 10, 0x201)
Local $Label6 = GUICtrlCreateLabel("o", 135, 105, 10, 10, 0x201)
Local $Label7 = GUICtrlCreateLabel("o", 235, 105, 10, 10, 0x201)
Local $Label8 = GUICtrlCreateLabel("d", 375, 105, 10, 10, 0x201)


GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $Label1
                        MsgBox(0, "", "a")
                Case $Label2
                        MsgBox(0, "", "f")
                Case $Label3
                        MsgBox(0, "", "a")
                Case $Label4
                        MsgBox(0, "", "n")
                Case $Label5
                        MsgBox(0, "", "g")
                Case $Label6
                        MsgBox(0, "", "o")
                Case $Label7
                        MsgBox(0, "", "o")
                Case $Label8
                        SplashTextOn("a", "", 200, 200)
                        ControlSetText("a", "", "Static1", "AFAN GOOD!")
                        Sleep(2000)
                        SplashOff()
        EndSwitch
WEnd

评分

参与人数 1金钱 +30 收起 理由
afan + 30 按了d才发现 ^ ^

查看全部评分

发表于 2011-10-22 18:17:24 | 显示全部楼层
回复 4# afan

终于弄明白了格子的来由了。。。文字 Label 的间隔显示底板  Label 的颜色成为格子线。。。
发表于 2011-10-22 18:52:06 | 显示全部楼层
本帖最后由 xiehuahere 于 2011-10-22 19:16 编辑

进来看过,不得不顶起。
又学到一种思维方式。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 12:54 , Processed in 0.096830 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表