ken0137 发表于 2008-7-13 16:54:48

如何将$Tab控件中的一个Sheet不可用

如何将$Tab控件中的一个Sheet不可用?
视情况,将$Tab控件中的一个Sheet无法使用,即不可点击,或者隐藏也可以

ken0137 发表于 2008-7-14 10:53:29

是不可行吗~~~~~

顽固不化 发表于 2008-7-14 11:56:03

au3赋予sheet的属性很少,因此在我看来,直接用au3去隐含或不可用sheet是比较困难的。

sanhen 发表于 2008-7-14 12:30:53

不要的话,直接删除不就行了?

ken0137 发表于 2008-7-14 13:27:01

在一定条件下,只显示其中一个,其他的隐藏或者不可选

mhgd 发表于 2009-7-26 22:19:54

看来没办法实现了。。。。
真可惜啊。。。。。

pusofalse 发表于 2009-7-26 22:43:22

Re 6#:
你是以什么为依据说出au3不能实现的呢?

mhgd 发表于 2009-7-26 22:57:39

本帖最后由 mhgd 于 2009-7-26 23:00 编辑

sanhen 老大都没好办法,希望不大了。。。
再说贴子都一年了,有办法的话应该早出来了吧,

目前正需要这方面的资料,搜索了一下,唉。。。

只能用其它办法来达到效果了。。。

pusofalse 发表于 2009-7-26 23:04:45

Re 8#:
只能说“说au3不能实现此功能”的人们太小看au3了。#include <WinAPI.au3>
#include <GUIConstants.au3>

$hGUI = GUICreate("Test", 300, 200)

GUICtrlCreateTab(5, 5, 290, 180)
$hTab = GUICtrlGetHandle(-1)
GUICtrlCreateTabItem("Sheet 1")
GUICtrlCreateButton("Button1", 40, 40, 80, 20)
GUICtrlCreateTabItem("Sheet 2")
GUICtrlSetState(-1, $GUI_SHOW)
GUICtrlCreateButton("Button2", 60, 70, 90, 20)

GUICtrlCreateTabItem("")

$hC = DllCallbackRegister("_TabProc", "int", "hWnd;uint;wparam;lparam")
$pC = DllCallbackGetPtr($hC)
$hTabProc = _WinAPI_SetWindowLong($hTab, -4, $pC)


GUISetState()

Do
Until guiGetMsg() = -3

Func _TabProc($hWnd, $iMsg, $wparam, $lparam)
        if $iMsg = 0x130b then return 1
        Return _WinAPI_CallWindowProc($hTabProc, $hWnd, $iMsg, $wparam, $lparam)
EndFunc

afan 发表于 2009-7-26 23:06:24

sanhen 老大都没好办法,希望不大了。。。
再说贴子都一年了,有办法的话应该早出来了吧,

目前正需要这方面的资料,搜索了一下,唉。。。

只能用其它办法来达到效果了。。。
mhgd 发表于 2009-7-26 22:57 http://www.autoitx.com/images/common/back.gif

7#都这么说了肯定就有答案吧,你期待一下吧~

lynfr8 发表于 2009-7-26 23:09:49

我也来凑个热闹
虽然没有现成的函数属性可以用
树挪死人挪活
很多问题转个弯就能解决了
只要稍加修改
就可以满足楼主的”在一定条件下,只显示其中一个,其他的隐藏或者不可选“要求
#include <GUIConstantsEx.au3>
#include <GuiTab.au3>;注意库文件
$Form1 = GUICreate("Form1", 633, 452, 192, 124)
$Tab = GUICtrlCreateTab(24, 16, 249, 89)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("点兵兵1")
$Input1 = GUICtrlCreateInput("点兵兵1", 48, 56, 193, 21)
$TabSheet2 = GUICtrlCreateTabItem("点兵兵2")
$Input2= GUICtrlCreateInput("点兵兵2", 48, 56, 193, 21)
$TabSheet3 = GUICtrlCreateTabItem("点不到我")
$Input3 = GUICtrlCreateInput("点兵兵3", 48, 56, 193, 21)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
While 1
if_GUICtrlTab_GetCurSel($Tab) = 1 then _GUICtrlTab_SetCurSel($Tab,2)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
   Exit
EndSwitch
WEnd

lynfr8 发表于 2009-7-26 23:18:11

有时候,自己的帖子如果真的很想解决
顶顶比较好
基本上大家都不会掘墓式翻旧帖的
因为新帖的提问都已经够大家忙活了
有时候
稍微来一下激将法效果也挺好的哦
你看你一说au3不行
就有高手蹦出来了
呵呵
孙子兵法都说兵不厌诈嘛
所以
提问还真的很讲智慧的
看看有些人的提问云里来雾来去的
直教人掉头就走啊
这样就成了死贴咯
就算我有时候回去掘墓翻翻旧帖
看到去年的某些陈旧老帖堆积很大部分原因就是提问者的无趣和懒惰
总想要别人的解决源码自己不肯动脑
所以啊
老贴还是顶顶更健康

afan 发表于 2009-7-26 23:41:00

呵呵,这个变通有意思啊,不过虽然2点不到,但是还是显示出它的内容了,倒是3却显示不出内容了
还要小小改改,呵呵

lynfr8 发表于 2009-7-26 23:56:56

没心情完善了,楼上有时间琢磨下
有结果就分享下

afan 发表于 2009-7-27 00:35:14

呵呵,这样改了下
#include <GUIConstantsEx.au3>
#include <GuiTab.au3>;注意库文件

$Form1 = GUICreate("Form1", 633, 452, 192, 124)
$Tab = GUICtrlCreateTab(24, 16, 249, 89)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("点兵兵1")
$Input1 = GUICtrlCreateInput("点兵兵1", 48, 56, 193, 21)
$TabSheet2 = GUICtrlCreateTabItem("点不到我")
$Input2 = GUICtrlCreateInput("点兵兵2", 48, 56, 193, 21)
$TabSheet3 = GUICtrlCreateTabItem("点兵兵3")
$Input3 = GUICtrlCreateInput("点兵兵3", 48, 56, 193, 21)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)

While 1
        if _GUICtrlTab_GetCurSel($Tab) = 1 then _GUICtrlTab_ClickTab($Tab, 2)
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd
页: [1] 2
查看完整版本: 如何将$Tab控件中的一个Sheet不可用