找回密码
 加入
搜索
查看: 12290|回复: 27

[转贴] 多层标签页实例(官网搜来)

 火.. [复制链接]
发表于 2009-8-4 17:31:17 | 显示全部楼层 |阅读模式
暂时无用!搜索一场,丢了可惜!放此处可能有人需要!
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <GuiListView.au3>
#include <GuiTab.au3>

Opt("GUIResizeMode", $GUI_DOCKBORDERS)

;当窗口调整大小时,运行此功能
GUIRegisterMsg($WM_SIZE, "MY_WM_SIZE")

Global $iGUIWidth = 800, $iGUIHeight = 500, $fResized = False

$MainGUI = GUICreate("Tab Row Example", $iGUIWidth, $iGUIHeight, Default, Default, _
        BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
$TAB = GUICtrlCreateTab(1, 1, $iGUIWidth - 2, $iGUIHeight - 50, _
        BitOR($GUI_SS_DEFAULT_TAB, $TCS_MULTILINE, $TCS_RIGHTJUSTIFY))

;设置一些选项卡项目
Global $iTabNumber = 15

;创建数组持有虚拟标签项目标题
Global $aTitles[$iTabNumber + 1]
For $i = 1 To $iTabNumber
    $aTitles[$i] = ""
    For $j = 1 To Random(4, 10, 1)
        $aTitles[$i] &= String($i) & " "
    Next
Next

;确定初始顶端标签值  
$iTabTop = Tab_Sizer($iTabNumber, $aTitles)

;创建数组,ListView 句柄
Global $aListView[$iTabNumber + 1] = [$iTabNumber]

;创建标签项目
For $i = 1 To $iTabNumber

    GUICtrlCreateTabItem($aTitles[$i])
    $aListView[$i] = GUICtrlCreateListView("文件清单", 10, $iTabTop, $iGUIWidth - 22, _
                $iGUIHeight - $iTabTop - 50, -1, $LVS_EX_CHECKBOXES)
        _GUICtrlListView_SetColumnWidth($aListView[$i], 0, $LVSCW_AUTOSIZE_USEHEADER)
        _GUICtrlListView_SetBkColor($aListView[$i], 0xFF0000) ; 只是为了显示尺寸
        GUICtrlSetResizing($aListView[$i], BitOR($GUI_DOCKBORDERS, $GUI_DOCKLEFT))

; 填写完整的项目    
For $j = 1 To 25
        GUICtrlCreateListViewItem("项目 " & $j & " - 清单 " & $i _
                        & "    Blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah", $aListView[$i])
    Next

Next

;关闭表定义
GUICtrlCreateTabItem("")

;创建虚拟按钮 
$hButton = GUICtrlCreateButton("按钮", 10, $iGUIHeight - 40, 120, 30)
GUICtrlSetResizing(-1, BitOR($GUI_DOCKWIDTH, $GUI_DOCKHEIGHT, $GUI_DOCKBOTTOM))

GUISetState(@SW_SHOW)

While 1
    
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
        ; dummy
    EndSwitch

;查找调整信息    
    If $fResized Then
        ;确定顶端标签值
        $iTabTop = Tab_Sizer($iTabNumber, $aTitles)
    ; 复位所有标签,以适应新的标签尺寸
        For $i = 1 To $aListView[0]
            GUICtrlSetPos($aListView[$i], 10, $iTabTop, $iGUIWidth - 22, $iGUIHeight - $iTabTop - 50)
            _GUICtrlListView_SetColumnWidth($aListView[$i], 0, $LVSCW_AUTOSIZE_USEHEADER)
        Next
    ; 重置标签
        $fResized = False
    EndIf

WEnd

Func Tab_Sizer($iTabTotal, $aTabTitles)
    
; 创建 GUI
    $TestGUI = GUICreate("", $iGUIWidth, 500)
; 创建标签
    $TestTAB = GUICtrlCreateTab(1, 1, $iGUIWidth - 2, 500, BitOR($GUI_SS_DEFAULT_TAB, $TCS_MULTILINE, $TCS_RIGHTJUSTIFY))
; 建立标签项目
    For $i = 1 To $iTabTotal
        GUICtrlCreateTabItem($aTabTitles[$i])
    Next
; 估算客户区标签
    $aPos = _GUICtrlTab_GetDisplayRect(ControlGetHandle($TestGUI, "", $TestTAB))
; 删除 GUI
    GUIDelete($TestGUI)
; 返回顶端标签值
    Return $aPos[1]
    
EndFunc
    
Func MY_WM_SIZE($hWnd, $Msg, $wParam, $lParam)
    
    $iGUIWidth = BitAND($lParam, 0xFFFF)
    $iGUIHeight = BitShift($lParam, 16)
; 设置标志
    $fResized = True
        
    Return $GUI_RUNDEFMSG
    
EndFunc  ;==>MY_WM_SIZE

本帖子中包含更多资源

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

×

评分

参与人数 4金钱 +77 贡献 +15 收起 理由
502762378 + 40 + 5 正好需要,谢谢
魔导 + 30 + 5 这个好强~~~~~~~~~~
xrbenbeba + 2
顽固不化 + 5 + 5 很好的参考资料

查看全部评分

发表于 2009-8-4 19:20:18 | 显示全部楼层
学习下!这个对在下有用!
发表于 2009-8-7 08:37:49 | 显示全部楼层
板凳,不错,不错啊!
老版本的显卡驱动的设置里用过这样的,
一直觉得很乱,没想到用autoit 可以实现
发表于 2009-8-7 10:35:42 | 显示全部楼层
不错,学习一下。。
发表于 2009-8-7 21:21:17 | 显示全部楼层
不错,收藏备用!
感谢分享!
发表于 2009-8-10 21:18:56 | 显示全部楼层
太乱
发表于 2009-10-10 21:01:16 | 显示全部楼层
谢谢分享!
发表于 2009-10-16 22:47:04 | 显示全部楼层
暂时用不上,占位先!
发表于 2009-10-17 03:09:25 | 显示全部楼层
不错哦!收藏了!
发表于 2009-10-17 10:15:03 | 显示全部楼层
值得学习!
谢谢分享!
发表于 2009-10-17 10:15:22 | 显示全部楼层
值得学习!
谢谢分享!
发表于 2009-11-11 21:23:28 | 显示全部楼层
谢谢分享!!!!!!!!!1
发表于 2010-1-11 00:12:47 | 显示全部楼层
值得学习!
谢谢分享!
发表于 2010-1-11 20:14:59 | 显示全部楼层
这个对在下有用!谢谢分享
发表于 2010-9-10 13:25:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 06:14 , Processed in 0.077982 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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