找回密码
 加入
搜索
查看: 4710|回复: 12

[GUI管理] 建立1400格 可幫我簡短 語法嗎? [已解决]

  [复制链接]
发表于 2012-4-27 16:59:54 | 显示全部楼层 |阅读模式
本帖最后由 tcpuuu 于 2012-5-20 11:49 编辑


=============================
GUICreate("UP AND DOWN",836,596, -1, -1)
;============================================================================
Global $EO=10,$KU=10,$KI=12,$KO=12;右;上;寬;高
local $T[1400]
For $i = 0 To 1399
$T[$i] = GUICtrlCreateLabel("",$EO,$KU,$KI,$KO,0x01)
$KU+=13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每格間隔
IF $i = 13 then $EO+=13
IF $i = 13 then $KU=10
IF $i = 27 then $EO+=13
IF $i = 27 then $KU=10
IF $i = 41 then $EO+=13
IF $i = 41 then $KU=10
IF $i = 55 then $EO+=13
IF $i = 55 then $KU=10
IF $i = 69 then $EO+=13
IF $i = 69 then $KU=10
IF $i = 83 then $EO+=13
IF $i = 83 then $KU=10
IF $i = 97 then $EO+=13
IF $i = 97 then $KU=10
IF $i = 111 then $EO+=13
IF $i = 111 then $KU=10
IF $i = 125 then $EO+=13
IF $i = 125 then $KU=10

GUICtrlSetBkColor($T[$i],0xFFFFFF)
GUICtrlSetData($T[$i],$i)
Next
;--------------------------------------
GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit          
        EndSwitch 
WEnd
===================================
IF $i = 13 then $EO+=13
IF $i = 13 then $KU=10
IF $i = 27 then $EO+=13
IF $i = 27 then $KU=10
IF $i = 41 then $EO+=13
每個都相差14  如何簡短?

本帖子中包含更多资源

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

×
发表于 2012-4-27 17:04:35 | 显示全部楼层
本帖最后由 shqf 于 2012-4-27 17:06 编辑

用or或用循环,如用or,可如下
IF $i = 13 or $i = 27 or $i = 41 then
 $EO=$EO+13
 $KU=10
endif
 楼主| 发表于 2012-4-27 17:07:07 | 显示全部楼层
這樣 OR 下去  也得要 100個以上
還有更精簡的嗎?
发表于 2012-4-27 17:14:09 | 显示全部楼层
本帖最后由 502762378 于 2012-4-27 17:26 编辑
    If $i>=13 And Mod($i-13,14)=0 Then
                $EO=$EO+13
                $KU=10
    EndIf

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
tcpuuu + 30 + 5 嗯! 502762378

查看全部评分

 楼主| 发表于 2012-4-27 19:07:06 | 显示全部楼层
本帖最后由 tcpuuu 于 2012-4-27 19:31 编辑


======================
GUICreate("UP AND DOWN",1310,296, -1, -1)
;============================================================================
Global $EO=2,$KU=10,$KI=12,$KO=12;右;上;寬;高
local $Tsc[1400]
For $i = 0 To 1399
$Tsc[$i] = GUICtrlCreateLabel("",$EO,$KU,$KI,$KO,0x01)
$KU+=13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每格間隔
  If $i>=13 And Mod($i-13,14)=0 Then
                $EO=$EO+13
                $KU=10
    EndIf

GUICtrlSetBkColor($Tsc[$i],0xFFFFFF)
GUICtrlSetData($Tsc[$i],$i)
Next

For $i = 7 To 1393 Step 14 
GUICtrlSetBkColor($Tsc[$i],0xFFFF00)
Next

$1Button = GUICtrlCreateButton("走高", 200, 196, 40,30);建按鈕控件
$2Button = GUICtrlCreateButton("走平", 200, 226, 40,30);建按鈕控件
$3Button = GUICtrlCreateButton("走低", 200, 256, 40,30);建按鈕控件
;--------------------------------------
$bj = $Tsc[7]
GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit          
       
Case $1button
$bj+=13
GUICtrlSetBkColor($bj,0xFF0000)
Case $2button
$bj+=14
GUICtrlSetBkColor($bj,0xFF0000)
Case $3button
$bj+=15
GUICtrlSetBkColor($bj,0xFF0000)
 EndSwitch 
WEnd
==================================================
再次請問 當 紅色已經在最高點  再按走高  紅色依然是在隔壁的最高點                 
                          當 紅色已經在最低點  再按走低  紅色依然是在隔壁的最低點

這該如何?

本帖子中包含更多资源

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

×
发表于 2012-4-27 19:35:23 | 显示全部楼层
回复 5# tcpuuu
把下面代码替换掉你自己相应注释行以下的所有代码
$bj = $Tsc[7]
$line = 7
GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit

                Case $1Button
                        If $line <> 0 Then
                                $bj += 13
                                $line -= 1
                        Else
                                $bj += 14
                        EndIf
                        GUICtrlSetBkColor($bj, 0xFF0000)
                Case $2Button
                        $bj += 14
                        GUICtrlSetBkColor($bj, 0xFF0000)
                Case $3Button
                        If $line <> 13 Then
                                $bj += 15
                                $line += 1
                        Else
                                $bj += 14
                        EndIf
                        ConsoleWrite($bj & @CR)
                        GUICtrlSetBkColor($bj, 0xFF0000)
        EndSwitch
WEnd

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
tcpuuu + 30 + 5 給你按1個 讚

查看全部评分

发表于 2012-4-27 20:14:07 | 显示全部楼层
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                                        Exit   
                Case 3
                                        MsgBox(1,1,3)                        
                Case $1button
                                        If Mod($bj,14) = 3 Then
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        Else
                                                $bj+=13
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        EndIf
                                Case $2button
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                Case $3button
                                        If Mod($bj,14) = 2 Then
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        Else
                                                $bj+=15
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        EndIf
EndSwitch 
WEnd
 楼主| 发表于 2012-4-27 20:14:33 | 显示全部楼层
嗯嗯! 感謝user3000 解說
======================
如果要 這個紅色 跑到 中間黃色地帶  改成黃色 GUICtrlSetBkColor($bj,0xFFFF00)
                       跑道  中間黃色地帶以下 改成綠色GUICtrlSetColor($bj,0x008000)
================================================
該如何?
发表于 2012-4-27 20:25:48 | 显示全部楼层
本帖最后由 user3000 于 2012-4-27 20:29 编辑

回复 8# tcpuuu

我把变量  $line = 7 放在 $bj = $Tsc[7] 下面,  就是想让你知道 $line 变量的意义, 它代表 '颜色点'所在的'行'啊!
     一开始 是中间   黄色.....上移是减小 $line 红色,,, 下移是增大 $line 绿色
  If   $Line = 7   then
       GUICtrlSetBkColor($bj,0xFFFF00)
      Elseif $Line > 7  Then
      GUICtrlSetColor($bj,0x008000)
      Else
        GUICtrlSetBkColor($bj, 0xFF0000)
Endif
发表于 2012-4-27 20:48:45 | 显示全部楼层
数字都显示不全,不如不显示。加个ToolTip都好点。
 楼主| 发表于 2012-4-27 22:09:58 | 显示全部楼层
本帖最后由 tcpuuu 于 2012-4-27 22:12 编辑

了解了! 如果不是在第0行  $bj + 13 行數減1 向上

数字都显示不全(因為眾多格 格子小) 沒關係啦  0 to 13 行 看清就好
都正確了 GUICtrlSetData($Tsc[$i],$i) 這行就要拿掉

7樓寫的 那一段是什麼?
发表于 2012-4-27 23:25:09 | 显示全部楼层
本帖最后由 502762378 于 2012-4-27 23:30 编辑

怎么都觉得没有三千兄的码简单。。
发表于 2012-4-28 00:21:29 | 显示全部楼层
回复 12# 502762378
汗, 你的代码思路很新颖, 也很有学习借鉴之处啊!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-11 19:12 , Processed in 0.092055 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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