找回密码
 加入
搜索
查看: 6159|回复: 18

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

[复制链接]
发表于 2008-7-13 16:54:48 | 显示全部楼层 |阅读模式
如何将$Tab控件中的一个Sheet不可用?
视情况,将$Tab控件中的一个Sheet无法使用,即不可点击,或者隐藏也可以
 楼主| 发表于 2008-7-14 10:53:29 | 显示全部楼层
是不可行吗~~~~~
发表于 2008-7-14 11:56:03 | 显示全部楼层
au3赋予sheet的属性很少,因此在我看来,直接用au3去隐含或不可用sheet是比较困难的。
发表于 2008-7-14 12:30:53 | 显示全部楼层
不要的话,直接删除不就行了?
 楼主| 发表于 2008-7-14 13:27:01 | 显示全部楼层
在一定条件下,只显示其中一个,其他的隐藏或者不可选
发表于 2009-7-26 22:19:54 | 显示全部楼层
看来没办法实现了。。。。
真可惜啊。。。。。
发表于 2009-7-26 22:43:22 | 显示全部楼层
Re 6#:
你是以什么为依据说出au3不能实现的呢?
发表于 2009-7-26 22:57:39 | 显示全部楼层
本帖最后由 mhgd 于 2009-7-26 23:00 编辑

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

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

只能用其它办法来达到效果了。。。
发表于 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

评分

参与人数 1贡献 +20 收起 理由
lynfr8 + 20 au3,我看行!

查看全部评分

发表于 2009-7-26 23:06:24 | 显示全部楼层
sanhen 老大都没好办法,希望不大了。。。
再说贴子都一年了,有办法的话应该早出来了吧,

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

只能用其它办法来达到效果了。。。
mhgd 发表于 2009-7-26 22:57


7#都这么说了肯定就有答案吧,你期待一下吧~
发表于 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

本帖子中包含更多资源

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

×
发表于 2009-7-26 23:18:11 | 显示全部楼层
有时候,自己的帖子如果真的很想解决
顶顶比较好
基本上大家都不会掘墓式翻旧帖的
因为新帖的提问都已经够大家忙活了
有时候
稍微来一下激将法效果也挺好的哦
你看你一说au3不行
就有高手蹦出来了
呵呵
孙子兵法都说兵不厌诈嘛
所以
提问还真的很讲智慧的
看看有些人的提问云里来雾来去的
直教人掉头就走啊
这样就成了死贴咯
就算我有时候回去掘墓翻翻旧帖
看到去年的某些陈旧老帖堆积很大部分原因就是提问者的无趣和懒惰
总想要别人的解决源码自己不肯动脑
所以啊
老贴还是顶顶更健康
发表于 2009-7-26 23:41:00 | 显示全部楼层
呵呵,这个变通有意思啊,不过虽然2点不到,但是还是显示出它的内容了,倒是3却显示不出内容了
还要小小改改,呵呵
发表于 2009-7-26 23:56:56 | 显示全部楼层
没心情完善了,楼上有时间琢磨下
有结果就分享下
发表于 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贡献 +3 收起 理由
lynfr8 + 3 效果ok

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 00:04 , Processed in 0.104993 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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