fenhanxue 发表于 2017-3-1 22:16:34

标签行数无限,而tab高度有限,如何添加垂直滚动条、或箭头之类的控件

对于
GUICtrlCreateTab
默认的样式是单行显示,当各标签项宽度总和大于Tab控件宽度,则会自动在右侧生成左右的箭头,如下图所示:



但是我不要单行的模式,我要多行的模式,请教多行的情况下,
当多行tag高度大于TAB高度时,如何才能让所有的tag都能正常显示出来?




测试代码如下:

#include <GUIConstantsEx.au3>
#include <TabConstants.au3>




Global $tab_item

$GUI_main = GUICreate("测试",350,400)
GUISetState()
$TAB= GUICtrlCreateTab(0,0,350,75,$TCS_MULTILINE );TAB 指标签控件                        $TCS_MULTILINE 多行显示
GUICtrlSetFont($TAB,14);设置标签字体


For $i = 1 To Random(1,100,1);创建随机个数的标签
        $tab_item[$i] = GUICtrlCreateTabItem("tag"&$i)
Next




While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                Exit
      EndSwitch
WEnd

Alam 发表于 2017-3-2 20:46:30

#include <GUIConstantsEx.au3>
#include <TabConstants.au3>




Global $tab_item, $iHeight1 = 100, $iHeight2

$GUI_main = GUICreate("测试",350,$iHeight1)
GUISetState()
$TAB= GUICtrlCreateTab(0,0,350,25,$TCS_MULTILINE );TAB 指标签控件                        $TCS_MULTILINE 多行显示
GUICtrlSetFont($TAB,14);设置标签字体


For $i = 1 To Random(1,100,1);创建随机个数的标签
    $tab_item[$i] = GUICtrlCreateTabItem("tag"&$i)
Next
ConsoleWrite($i&@CRLF)       
Local $iCount = Int($i/5)
If Mod($i, 5) <> 0 Then $iCount += 1
$iHeight2 = $iCount*25
GUICtrlSetPos($TAB, 0, 0, 350, $iHeight2)
If $iHeight2 > $iHeight1 Then
Local $aPos = WinGetPos($GUI_main)
WinMove($GUI_main, '', $aPos, $aPos, 350, $iHeight2+50)
EndIf
While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                              Exit
      EndSwitch
WEnd

fenhanxue 发表于 2017-3-2 21:45:06

回复 2# Alam


    这样不行,$TAB 我是要他必须固定高度,不允许他改变高度的,
   
    因为在$TAB 控件下方,还会有其他的内容要添加

Alam 发表于 2017-3-3 06:50:26

........
可以适当的隐藏部分TAG,在右边增加两个按钮,点击则轮流改变它们的隐藏状态.

fenhanxue 发表于 2017-3-3 11:27:37

回复 4# Alam


    恩,这倒是一个思路
页: [1]
查看完整版本: 标签行数无限,而tab高度有限,如何添加垂直滚动条、或箭头之类的控件