找回密码
 加入
搜索
查看: 7836|回复: 25

[AU3基础] 如何创建 第二行或更多行标签页?[已解决]

  [复制链接]
发表于 2012-3-4 13:51:16 | 显示全部楼层 |阅读模式
本帖最后由 魔导 于 2012-3-6 19:47 编辑

如题,这样的源码要怎么创建第二行标签页并把  JS-9到JS-16 放在第二行里面?
这是   A大  给的源码(绿字是小弟的遇见 , 还请各位指教),在此感谢各位前辈
;~ 此版  修正   无单选就不换行
;~ 代码为   $sInfo &= @CRLF

;~ 8各TAB单页          
;~ 12个复选框   每个TAB单页中都有
;~ 12各复选框中有8个单选  (一组)
;~ 选好后以TAB为以单位   读取读取的   框

#NoTrayIcon
Local $aTabItem[17] = [16], $aCheckbox[13][17] = [[12]], $iTab = 1
;~ 声明 单页有【17】个= tab有【16】个 ,竖的【13】横的【17】=内【12】,iTAB=1
Local $aCkTxt[12] = ['XD<上>', 'XD<下>', 'BT<上>', 'BT<下>', 'ND<上>', 'ND<下>', 'SL<上>', _
                'SL<下>', 'DF<上>', 'DF<下>', 'KN<上>', 'KN<下>']
;~                                 声明有【12】个复选=【各复选框的名字和排序】
Local $aRdTxt[8] = ['A1', 'A4', 'A7', 'D1', 'D8', 'E1', 'E2', 'NO']
;~ 声明有【8】个单选=【各个单选的名字和排序】
Local $hGui = GUICreate('老板专用>>>调控器', 800, 442)
;创建一个GUI窗口
GUISetBkColor(0xFFFFFF)
;设置空间颜色
Local $tab = GUICtrlCreateTab(0, 0, 800,370)
;在GUI 上创建一个TAB标签页
Local $Bt = GUICtrlCreateButton('读取', 500, 355, 80, 20)
;在GUI上创建一个按钮控件
For $i = 1 To 16
;~         声明 1到16(TAB)
        _CreateTab($i)
         Next
;~ 该函数(for 到 next) 创建GUI和其中的  JS01到JS08 和  TAB 中的单选 和  复选 及  读取 按钮 
GUICtrlCreateTabItem('')
;在GUI上创建一个标签页控件项目
GUISetState()
;调整窗口的状态
While 1
        $msg = GUIGetMsg()
                ;捕获窗口消息
        Switch $msg
;~                         表达式   捕获窗口消息
                                                        Case -3
;~                                                                 是 -3  就
;~                                                 (如果点击        控件里的小 ×   就)
                        Exit
;~                                         退出
                Case $tab
;~                                         是  TAB 标签页 就
                        $iTab = GUICtrlRead($msg) + 1
                                                ;读取指定控件的状态或相关数据(捕获窗口消息)+1
;~                         WinSetTitle($hGui, '', '老板专用>>>调控器 - JS =>' & $iTab)
;~                                                 修改指定窗口的标题(老板专用调控器,‘文本(没有)’,‘老板专用>>>调控器 - JS =>’&$iTab)
;~                         从  $iTab  得出  老板专用>>>调控器 - JS => 1  到 老板专用>>>调控器 - JS =>  N
                Case $aCheckbox[1][$iTab] To $aCheckbox[12][$iTab]
;~                                 是        $aCheckbox 【1】【读取指定控件的状态或相关数据(捕获窗口消息)+1】到  $aCheckbox 【12】 【读取指定控件的状态或相关数据(捕获窗口消息)+1】
;~                                         所有  tab 页上的   复选框(1到12)  
                        If Not IsInt(($msg - $aCheckbox[1][$iTab]) / 9) Then ContinueLoop
;~                                 如果   非  整型数   ((捕获窗口消息 - 【1】【$Tab】/9)就 继续下一个循环(For)
                        Local $state = GUICtrlRead($msg)
;~                                                 =读取指定控件的状态或相关数据(捕获窗口消息)
                        For $xx = 0 To 7
;~                                                         $xx = 0 到 7
                                GUICtrlSetState(Eval($msg & '_' & $xx), Round($state / 2) * 64)
;~                                         调整指定控件的状态(返回字符串形式的变量的值(捕获窗口消息)&'_'&0到7),
;~                        返回某数值精确到指定位的结果.(读取指定控件的状态或相关数据(捕获窗口消息)/2)*64)
                        Next
;~                                                 结束 $xx = 0 到 7 循环
                Case $Bt
;~                                         是  ”读取“  按钮  就
                        Local $sInfo = ''
;~                                                 =''
                        For $j = 1 To 12
;~                                                         1到12 
                                If GUICtrlRead($aCheckbox[$j][$iTab]) <> 1 Then ContinueLoop
;~                                                 如果                读取指定控件的状态或相关数据(复选框【1到12】【读取指定控件的状态或相关数据(捕获窗口消息)+1】)
;~                            是  1   就      继续一个 While/Do/For 循环.
                                                                $sInfo &= $aCkTxt[$j - 1] & ' ===> '
;~                                                                 =$aCkTxt[$j - 1](0到11)&‘===>’
                                For $xx = 0 To 7
;~                                                                         0到7
                                        If GUICtrlRead(Eval($aCheckbox[$j][$iTab] & '_' & $xx)) = 1 Then 
;~                               如果   读取指定控件的状态或相关数据(返回字符串形式的变量的值(【1到12】【读取指定控件的状态或相关数据(捕获窗口消息)+1】))                  
;~                                                                         &'_'&0到7))=1 
                                                                                                                $sInfo &= $aRdTxt[$xx]
;~                                                                                                     就
;~                                                                                                        得出  复选【单选】
                                        EndIf
;~                                                                                 结束  IF 
                                Next
;~                                                                 结束 0到7 循环
                                $sInfo &= @CRLF
;~                                                                 $sInfo    以后使用时就换行
                        Next
;~                                                 结束   1 到 12 循环
                        If $sInfo <> '' Then MsgBox(0, 'JS=>' & $iTab, $sInfo)
;~                                                 如果  是 '' 就  显示对话框(0,'js 0'&读取指定控件的状态或相关数据(捕获窗口消息)+1,得出  复选【单选】)
        EndSwitch
;~                 结束  表达式
WEnd

Func _CreateTab($X)
        $aTabItem[$x] = GUICtrlCreateTabItem('JS=>' & $x)
;~                 =创建TAB名字为JS0+$X
;~ 此条只声明要创建以   JS0 为起的TAB  X未设定
        Local $j_x = 32, $j_y = 20, $j_Jy = 30
;~           声明         $j_x = 32, $j_y = 20, $j_Jy = 30
        For $i = 0 To 11
;~                            0到11  共12个   
                $aCheckbox[$i + 1][$x] = GUICtrlCreateCheckbox($aCkTxt[$i], 10, $j_Jy + $j_y * $i, 70, 15)
;~                =建立复选框(复选框的名字(1到12),左侧,每个复选的顶部,宽度,高度)
;~ 每个(<1>=30+20*0 <2>=30+20*1 <3>=30+20*3.....<12>=30+20*12)
                           
                           GUIStartGroup()
;~                            使此后所有被创建的控件都归为一组(默认使用上一次用过的句柄)
                For $ii = 0 To 7
;~                                         0 到 7  共 8个
;~                      Assign ( "变量名", "数据" [, 标志] )  给指定变量赋值  2 是  强制创建为全局作用域变量
                        Assign($aCheckbox[$i + 1][$x] & '_' & $ii, GUICtrlCreateRadio($aRdTxt[$ii], _
                                        80 + $j_x * $ii, $j_Jy + $j_y * $i, 30, 17),2)
;~                                         给指定变量赋值(单选 1 到 12 【$x】&'_'& 0 到 7,创建单选框(名字和排序 0到 7,)_
;~                                                                                 80+32*0 到 7,30+20*0 到  11,30,17),强制创建为全局作用域变量)
                        GUICtrlSetState(-1, 128)
;~                                                 调整指定控件的状态(这一个控件,变成灰色《即不可用》)
                Next
;~                                 结束 0 到 7  共 8个
                If Not IsInt($i / 2) Then $j_Jy += 20
;~                         如果         不是整形数  则  添加 20 到 $j_Jy
;~ (用+20 留出每两个复选的间距)
        Next
;~                 结束 0 到 11 共12个
EndFunc   ;==>_CreateTab

评分

参与人数 1金钱 +20 收起 理由
afan + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2012-3-4 18:32:41 | 显示全部楼层
怎么没人呢?
我又问到幼稚问题啦?
发表于 2012-3-4 21:16:55 | 显示全部楼层
知道的不一定会说、想说的不一定知道。
现在的论坛基本上就这样… 习惯吧。

GUICtrlCreateTab(0, 0, 400, 400, $TCS_MULTILINE) ;加 $TCS_MULTILINE 样式

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
魔导 + 30 + 5 谢谢帮助,,

查看全部评分

 楼主| 发表于 2012-3-6 19:47:04 | 显示全部楼层
回复 3# afan


      谢谢   A大
    这东西搞几天都没搞出来  
   又去看元老的  《官方多层标签》   没看懂
发表于 2012-3-6 19:58:12 | 显示全部楼层
回复 4# 魔导


    现在搞懂没?
加了样式后还需要改几个变量的值,否则很乱
 楼主| 发表于 2012-3-7 19:37:03 | 显示全部楼层
回复 5# afan


    会乱啊?
我没改变量的值,加了式样后是   有两个小箭头可以翻页的
发表于 2012-3-7 19:38:44 | 显示全部楼层
回复 6# 魔导


    你不是要两行吗?
 楼主| 发表于 2012-3-7 19:42:34 | 显示全部楼层
回复 5# afan


    会乱啊?
我没改变量的值,加了式样后
没有出第二行
不过有两个小箭头可以翻页的,GUI就可以改小了

本帖子中包含更多资源

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

×
 楼主| 发表于 2012-3-7 19:44:53 | 显示全部楼层
回复 7# afan


    是啊   是想要两行    (目的是可以把GUI写小一点)

加了您给的式样后  可以写小了   所以不好意思麻烦您了
 楼主| 发表于 2012-3-7 19:47:00 | 显示全部楼层
回复 7# afan


    如果可以的话   还请您指点指点
小弟不懂E文   好多帮助看不懂
发表于 2012-3-7 19:50:36 | 显示全部楼层
回复 8# 魔导


    如果界面可以装下所有标签,就只有一行,当然不会乱。
如果你要多行,那么界面就要小些,如我上面写的 GUICtrlCreateTab(0, 0, 400, ...
如此,就会出现第二行。出现第二行后,标签行就有两倍高了,而里面的控件并不会向下移动腾出位置,所以就需要调整坐标。
另外,如果你的界面宽度为800,想均分两行标签,1~8,9~16,那么还需要调整每个标签的标题,使之达到差不多的宽度…
;~ 此版  修正   无单选就不换行
;~ 代码为   $sInfo &= @CRLF

;~ 8各TAB单页
;~ 12个复选框   每个TAB单页中都有
;~ 12各复选框中有8个单选  (一组)
;~ 选好后以TAB为以单位   读取读取的   框

#NoTrayIcon
Local $aTabItem[17] = [16], $aCheckbox[13][17] = [[12]], $iTab = 1
;~ 声明 单页有【17】个= tab有【16】个 ,竖的【13】横的【17】=内【12】,iTAB=1
Local $aCkTxt[12] = ['XD<上>', 'XD<下>', 'BT<上>', 'BT<下>', 'ND<上>', 'ND<下>', 'SL<上>', _
                'SL<下>', 'DF<上>', 'DF<下>', 'KN<上>', 'KN<下>']
;~                              声明有【12】个复选=【各复选框的名字和排序】
Local $aRdTxt[8] = ['A1', 'A4', 'A7', 'D1', 'D8', 'E1', 'E2', 'NO']
;~ 声明有【8】个单选=【各个单选的名字和排序】
Local $hGui = GUICreate('老板专用>>>调控器', 600, 442)
;创建一个GUI窗口
GUISetBkColor(0xFFFFFF)
;设置空间颜色
Local $tab = GUICtrlCreateTab(0, 0, 400, 400, 0x0200) ;$TCS_MULTILINE 0x0200
;在GUI 上创建一个TAB标签页
Local $Bt = GUICtrlCreateButton('读取', 500, 410, 80, 20)
;在GUI上创建一个按钮控件
For $i = 1 To 16
;~      声明 1到16(TAB)
        _CreateTab($i)
Next
;~ 该函数(for 到 next) 创建GUI和其中的  JS01到JS08 和  TAB 中的单选 和  复选 及  读取 按钮
GUICtrlCreateTabItem('')
;在GUI上创建一个标签页控件项目
GUISetState()
;调整窗口的状态
While 1
        $msg = GUIGetMsg()
        ;捕获窗口消息
        Switch $msg
;~                      表达式   捕获窗口消息
                Case -3
;~                                                              是 -3  就
;~                                              (如果点击      控件里的小 ×   就)
                        Exit
;~                                      退出
                Case $tab
;~                                      是  TAB 标签页 就
                        $iTab = GUICtrlRead($msg) + 1
                        ;读取指定控件的状态或相关数据(捕获窗口消息)+1
;~                         WinSetTitle($hGui, '', '老板专用>>>调控器 - JS =>' & $iTab)
;~                                              修改指定窗口的标题(老板专用调控器,‘文本(没有)’,‘老板专用>>>调控器 - JS =>’&$iTab)
;~                         从  $iTab  得出  老板专用>>>调控器 - JS => 1  到 老板专用>>>调控器 - JS =>  N
                Case $aCheckbox[1][$iTab] To $aCheckbox[12][$iTab]
;~                              是      $aCheckbox 【1】【读取指定控件的状态或相关数据(捕获窗口消息)+1】到  $aCheckbox 【12】 【读取指定控件的状态或相关数据(捕获窗口消息)+1】
;~                                      所有  tab 页上的   复选框(1到12)
                        If Not IsInt(($msg - $aCheckbox[1][$iTab]) / 9) Then ContinueLoop
;~                              如果   非  整型数   ((捕获窗口消息 - 【1】【$Tab】/9)就 继续下一个循环(For)
                        Local $state = GUICtrlRead($msg)
;~                                              =读取指定控件的状态或相关数据(捕获窗口消息)
                        For $xx = 0 To 7
;~                                                      $xx = 0 到 7
                                GUICtrlSetState(Eval($msg & '_' & $xx), Round($state / 2) * 64)
;~                                      调整指定控件的状态(返回字符串形式的变量的值(捕获窗口消息)&'_'&0到7),
;~                        返回某数值精确到指定位的结果.(读取指定控件的状态或相关数据(捕获窗口消息)/2)*64)
                        Next
;~                                              结束 $xx = 0 到 7 循环
                Case $Bt
;~                                      是  ”读取“  按钮  就
                        Local $sInfo = ''
;~                                              =''
                        For $j = 1 To 12
;~                                                      1到12
                                If GUICtrlRead($aCheckbox[$j][$iTab]) <> 1 Then ContinueLoop
;~                                              如果            读取指定控件的状态或相关数据(复选框【1到12】【读取指定控件的状态或相关数据(捕获窗口消息)+1】)
;~                            是  1   就      继续一个 While/Do/For 循环.
                                $sInfo &= $aCkTxt[$j - 1] & ' ===> '
;~                                                              =$aCkTxt[$j - 1](0到11)&‘===>’
                                For $xx = 0 To 7
;~                                                                      0到7
                                        If GUICtrlRead(Eval($aCheckbox[$j][$iTab] & '_' & $xx)) = 1 Then
;~                               如果   读取指定控件的状态或相关数据(返回字符串形式的变量的值(【1到12】【读取指定控件的状态或相关数据(捕获窗口消息)+1】))
;~                                                                      &'_'&0到7))=1
                                                $sInfo &= $aRdTxt[$xx]
;~                                                                                                  就
;~                                                                                                     得出  复选【单选】
                                        EndIf
;~                                                                              结束  IF
                                Next
;~                                                              结束 0到7 循环
                                $sInfo &= @CRLF
;~                                                              $sInfo    以后使用时就换行
                        Next
;~                                              结束   1 到 12 循环
                        If $sInfo <> '' Then MsgBox(0, 'JS=>' & $iTab, $sInfo)
;~                                              如果  是 '' 就  显示对话框(0,'js 0'&读取指定控件的状态或相关数据(捕获窗口消息)+1,得出  复选【单选】)
        EndSwitch
;~              结束  表达式
WEnd

Func _CreateTab($X)
        $aTabItem[$X] = GUICtrlCreateTabItem('JS=>' & $X)
;~              =创建TAB名字为JS0+$X
;~ 此条只声明要创建以   JS0 为起的TAB  X未设定
        Local $j_x = 32, $j_y = 20, $j_Jy = 40
;~        声明   $j_x = 32, $j_y = 20, $j_Jy = 30
        For $i = 0 To 11
;~                         0到11  共12个
                $aCheckbox[$i + 1][$X] = GUICtrlCreateCheckbox($aCkTxt[$i], 10, $j_Jy + $j_y * $i, 70, 15)
;~                =建立复选框(复选框的名字(1到12),左侧,每个复选的顶部,宽度,高度)
;~ 每个(<1>=30+20*0 <2>=30+20*1 <3>=30+20*3.....<12>=30+20*12)

                GUIStartGroup()
;~                         使此后所有被创建的控件都归为一组(默认使用上一次用过的句柄)
                For $ii = 0 To 7
;~                                      0 到 7  共 8个
;~                      Assign ( "变量名", "数据" [, 标志] )  给指定变量赋值  2 是  强制创建为全局作用域变量
                        Assign($aCheckbox[$i + 1][$X] & '_' & $ii, GUICtrlCreateRadio($aRdTxt[$ii], _
                                        80 + $j_x * $ii, $j_Jy + $j_y * $i, 30, 17), 2)
;~                                      给指定变量赋值(单选 1 到 12 【$x】&'_'& 0 到 7,创建单选框(名字和排序 0到 7,)_
;~                                                                              80+32*0 到 7,30+20*0 到  11,30,17),强制创建为全局作用域变量)
                        GUICtrlSetState(-1, 128)
;~                                              调整指定控件的状态(这一个控件,变成灰色《即不可用》)
                Next
;~                              结束 0 到 7  共 8个
                If Not IsInt($i / 2) Then $j_Jy += 20
;~                      如果    不是整形数  则  添加 20 到 $j_Jy
;~ (用+20 留出每两个复选的间距)
        Next
;~              结束 0 到 11 共12个
EndFunc   ;==>_CreateTab
 楼主| 发表于 2012-3-7 20:01:02 | 显示全部楼层
回复 11# afan

   测试--已经有第二行了
    再次感谢A大,
发表于 2012-3-7 20:01:23 | 显示全部楼层
这么多的注释也蛋痛
发表于 2012-3-7 20:02:38 | 显示全部楼层
回复 12# 魔导


    在 3# 给你的代码就有第二行… 不够仔细
GUICtrlCreateTab(0, 0, 400, 400, $TCS_MULTILINE) ;加 $TCS_MULTILINE 样式
 楼主| 发表于 2012-3-7 20:03:39 | 显示全部楼层
回复 13# seniors


    真不好意思,是因为小弟看不懂  所以就边翻帮助边写上去的
谢谢关注
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 18:45 , Processed in 0.097278 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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