woeiwoei 发表于 2011-10-21 17:52:34

做个输入器~[已解决]

本帖最后由 woeiwoei 于 2011-10-25 09:08 编辑



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

我不想一个一个画呀。。大家有什么好的建议么?做完后 我贴源码上来。。{:face (280):}

jj119120 发表于 2011-10-21 21:09:13

脑子中 瞬间闪过的想法是变量加位移 批量生成按钮也就是说下一个按钮的位置是上一个按钮的位置加宽度全部是按钮的话就不用画格子了

只是一个想法   不知道有没有可行性

131738 发表于 2011-10-21 23:01:22

本帖最后由 131738 于 2011-10-21 23:07 编辑

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

afan 发表于 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 To $Label[$_c - 1]
                        GUICtrlSetData($LD, $aTxt[$msg - 4])
        EndSwitch
WEnd

lixiaolong 发表于 2011-10-22 00:12:10

回复 4# afan

这代码写的太好了!Good!!

gzh888666 发表于 2011-10-22 00:20:16

afan的数学真的不错!

xms77 发表于 2011-10-22 11:24:52

顶afan,真是写的太棒了

menfan1 发表于 2011-10-22 11:26:45

不错,学习一下哈

都市浪子666 发表于 2011-10-22 13:18:21

A版真厉害,,学习了

131738 发表于 2011-10-22 13:34:20

本帖最后由 131738 于 2011-10-22 13:45 编辑

回复 4# afan

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

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

$aTxt = StringRegExp($text, '.', 3) 等效于 StringSplit字符拆分吧?

3mile 发表于 2011-10-22 14:20:58

回复 10# 131738
貌似是$SS_CENTER+$SS_CENTERIMAGE

131738 发表于 2011-10-22 17:44:39

回复 11# 3mile

谢谢!!!替换后效果相同!

lixiaolong 发表于 2011-10-22 17:55:15

afan版主写的真好,还可以把格子里的字符当按钮使.{:face (190):}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

131738 发表于 2011-10-22 18:17:24

回复 4# afan

终于弄明白了格子的来由了。。。文字 Label 的间隔显示底板Label 的颜色成为格子线。。。

xiehuahere 发表于 2011-10-22 18:52:06

本帖最后由 xiehuahere 于 2011-10-22 19:16 编辑

进来看过,不得不顶起。
又学到一种思维方式。
页: [1] 2 3
查看完整版本: 做个输入器~[已解决]