做个输入器~[已解决]
本帖最后由 woeiwoei 于 2011-10-25 09:08 编辑想做个 这样的工具,但是 第一个问题是右边的格子怎么做?
我不想一个一个画呀。。大家有什么好的建议么?做完后 我贴源码上来。。{:face (280):} 脑子中 瞬间闪过的想法是变量加位移 批量生成按钮也就是说下一个按钮的位置是上一个按钮的位置加宽度全部是按钮的话就不用画格子了
只是一个想法 不知道有没有可行性 本帖最后由 131738 于 2011-10-21 23:07 编辑
设置 Label 高度为 1 ,作为水平线,宽度为 1 作为垂直线,每格再放一个 Label ,瞎想的。。。
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 回复 4# afan
这代码写的太好了!Good!! afan的数学真的不错! 顶afan,真是写的太棒了 不错,学习一下哈 A版真厉害,,学习了 本帖最后由 131738 于 2011-10-22 13:45 编辑
回复 4# afan
调试分析了半天,还是看不出那格子是如何画的,能告知 0x201 是什么样式吗?
带边框 Label 需要 #include <GUIConstantsEx.au3> ,即使这样,做出的的是间隔方块,不能显示文字。。。
$aTxt = StringRegExp($text, '.', 3) 等效于 StringSplit字符拆分吧? 回复 10# 131738
貌似是$SS_CENTER+$SS_CENTERIMAGE 回复 11# 3mile
谢谢!!!替换后效果相同! 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 回复 4# afan
终于弄明白了格子的来由了。。。文字 Label 的间隔显示底板Label 的颜色成为格子线。。。 本帖最后由 xiehuahere 于 2011-10-22 19:16 编辑
进来看过,不得不顶起。
又学到一种思维方式。