本帖最后由 魔导 于 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
|