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

请教 窗口分页显示 的问题

 火.. [复制链接]
发表于 2010-1-19 23:16:15 | 显示全部楼层 |阅读模式
本帖最后由 非典男人 于 2010-1-21 23:43 编辑

标题可能有些不清楚.我再贴上图和代码   
现在的问题是  如下图

可以用源码 测试一下效果  点击 树形菜单中的任何一个项目 达到能够 关闭或销毁/隐藏 其他项目内容的效果 谢谢
另外 如果要把右边的内容全部隐藏的话 是不是需要用 GUICtrlSetState($Group1, $GUI_Hide)将每个空间都执行隐藏 那么如果右边调用的是类似于 _ceshi01() 内容的话 该如何操作
下面源码是暂时的解决办法 () 现在想有没有办法 更简单一些
在这里先谢谢在官方Q群里知道过我的Q友 如果可以 希望可以提供简单的方案 带注释最好不过了  谢谢了
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("分离窗口测试", 338, 221, 263, 232)
$TreeView1 = GUICtrlCreateTreeView(8, 8, 105, 169)
$TreeView1_0 = GUICtrlCreateTreeViewItem("项目", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("项目01", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("项目02", $TreeView1_0)
$TreeView1_3 = GUICtrlCreateTreeViewItem("项目03", $TreeView1_0)
$TreeView1_4 = GUICtrlCreateTreeViewItem("功能", $TreeView1)
$TreeView1_5 = GUICtrlCreateTreeViewItem("功能01", $TreeView1_4)
$TreeView1_6 = GUICtrlCreateTreeViewItem("功能02", $TreeView1_4)
$TreeView1_7 = GUICtrlCreateTreeViewItem("功能03", $TreeView1_4)
$TreeView1_8 = GUICtrlCreateTreeViewItem("功能04", $TreeView1_4)
$TreeView1_9 = GUICtrlCreateTreeViewItem("列表", $TreeView1)
$TreeView1_10 = GUICtrlCreateTreeViewItem("列表01", $TreeView1_9)
$TreeView1_11 = GUICtrlCreateTreeViewItem("列表02", $TreeView1_9)
$TreeView1_12 = GUICtrlCreateTreeViewItem("列表03", $TreeView1_9)
$TreeView1_13 = GUICtrlCreateTreeViewItem("列表04", $TreeView1_9)
GUISetState(@SW_SHOW)
$Label001 = GUICtrlCreateLabel("项目 默认显示", 224, 100, 100, 17)
$Group1 = GUICtrlCreateGroup("演示001", 120, 0, 209, 177)
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Radio1 = GUICtrlCreateRadio("演示002", 128, 16, 113, 17)
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Checkbox1 = GUICtrlCreateCheckbox("演示003", 128, 32, 97, 17)
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Group2 = GUICtrlCreateGroup("演示004", 208, 48, 97, 73)
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Label1 = GUICtrlCreateLabel("演示005", 224, 88, 75, 17)
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Label002 = GUICtrlCreateLabel("功能 默认显示", 224, 100, 100, 17)        
                        GUICtrlSetState(-1, $GUI_HIDE) 
$Button1 = GUICtrlCreateButton("按钮1", 144, 136, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("按钮2", 232, 136, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#EndRegion 
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
     Case $TreeView1
      hide()
                        GUICtrlSetState($Label001, $GUI_SHOW)
     Case $TreeView1_1
      hide()
                                GUICtrlSetState($Group1, $GUI_SHOW)
       Case $TreeView1_2
        hide()
                                GUICtrlSetState($Radio1, $GUI_SHOW)
       Case $TreeView1_3
        hide()
                                GUICtrlSetState($Checkbox1, $GUI_SHOW)
       Case $TreeView1_4
        hide()
                                GUICtrlSetState($Label002, $GUI_SHOW)
       Case $TreeView1_5
        hide()
                                _ceshi01()
       Case $TreeView1_6
                 hide()  ;隐藏
           GUICtrlSetState($Label1, $GUI_SHOW) ;显示
                        Case $TreeView1_7
                                
                Case $Label1
                Case $Button2
                Case $TreeView1
        EndSwitch
WEnd
Func _ceshi01()
        $Label003 = GUICtrlCreateLabel("函数显示测试", 224, 100, 100, 17)        
        $Button003 = GUICtrlCreateButton("函数按钮", 144, 136, 75, 25)
EndFunc

Func hide()
  GUICtrlSetState($Group1,$GUI_HIDE)
  GUICtrlSetState($Label001,$GUI_HIDE)
  GUICtrlSetState($Radio1,$GUI_HIDE)
  GUICtrlSetState($Checkbox1,$GUI_HIDE)
  GUICtrlSetState($Label002,$GUI_HIDE)
  GUICtrlSetState($Label1,$GUI_HIDE)
EndFunc

本帖子中包含更多资源

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

×
发表于 2010-1-19 23:20:57 | 显示全部楼层
你现在的问题是表达清楚了。但我没明白你想要达到什么效果。?
另外你这代码可以不用事件模式的
发表于 2010-1-19 23:25:00 | 显示全部楼层
就是啊,你连问题都没说清呢,到底想实现什么,或遇见什么问题了啊。。
 楼主| 发表于 2010-1-19 23:26:41 | 显示全部楼层
先谢谢楼上的两位 我从新写一下吧
发表于 2010-1-19 23:29:56 | 显示全部楼层
有更简单的办法,见gui的事件模式教程。
发表于 2010-1-19 23:48:35 | 显示全部楼层
隐藏会好些,因为可以保留修改过的状态,譬如有INPUT控件,用户已输入部分数据,如果切换到其他页再切回,结果数据重置了,就不人性化了。。
全面隐藏和显示,当然是标签页最合适了,否则一般得自行处理所有控件的显示与隐藏,如果这样的话,只能在控件名上力求有规律,用Execute 或EVAL力求简便统一处理之。。
不过这样做怕会在切换时有闪动感觉,我做过一个类似的,不过我的控件简单,都是LISTVIEW,切换时,在配置不好机器上,会闪出首面得LABLE
 楼主| 发表于 2010-1-20 00:10:41 | 显示全部楼层
本帖最后由 非典男人 于 2010-1-20 00:12 编辑

谢谢楼上的 给的建议,  我之前一直都认为用 GUICtrlDelete 比较好一些,现在了解了
我现在 在切换的时候 感觉很麻烦 不知道用什么方法可以简单快捷一些  我现在的操作时

每次切换时 都需要用 GUICtrlSetState 来设置所有控件的状态 一旦程序内的空间比较多时 那么程序的代码感觉一直都是在重复一件事情
发表于 2010-1-20 00:20:24 | 显示全部楼层
本帖最后由 landays 于 2010-1-20 00:21 编辑
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 451, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 120, 16, 161, 25, 0)
$Button2 = GUICtrlCreateButton("Button1", 232, 75, 161, 25, 0)
$Button3 = GUICtrlCreateButton("Button1", 91, 118, 161, 25, 0)
$Button4 = GUICtrlCreateButton("Button1", 216, 190, 161, 25, 0)
$Button5 = GUICtrlCreateButton("Button1", 119, 238, 161, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        Case $Button1 
                        For $i = 3 to 7
                            GUICtrlSetState ($i,$GUI_HIDE)        
                        Next
        EndSwitch
WEnd
隐藏控件简便的方法?这算不算?
发表于 2010-1-20 00:22:19 | 显示全部楼层
我想你的TreeView里的项目如果固定的话,简单些,如果是动态生成的,那会麻烦些,但就看怎么组织了。。

说简单点的,如果TREEVIEW固定的话,那么右边控件也应相应固定了,那么在进入循环前,所有控件都已生成了,(如果是事件模式,右边控件的guictrlsetonevent也应做好了),那么进入循环状态时,就只感应TREEVIEW的切换,控制右边控件的隐藏与显示和右边控件的触发。。
唯一麻烦就是控制右边控件的隐藏与显示,这个要是你控件命名有规律的话,完全可以一个函数搞定,至于耗时和切换时的闪屏,我不好弄,呵呵

呵呵,要是group控件能联动所有内置控件的状态就好了,不知API能帮上吗不?
 楼主| 发表于 2010-1-20 00:24:40 | 显示全部楼层
本帖最后由 非典男人 于 2010-1-20 00:26 编辑

就是固定的  另外我现在还是刚开始阶段 就已经要打算做出很多控件了 同时也会通过读取函数 或直接调用显示函数中的内容 这样的话 又应该怎么操作
 楼主| 发表于 2010-1-20 01:26:33 | 显示全部楼层
谢谢楼上几位的 不吝赐教  睡觉了 大家
发表于 2010-1-20 07:48:23 | 显示全部楼层
来学习一下。
发表于 2010-1-20 08:04:47 | 显示全部楼层
来学习一下。
 楼主| 发表于 2010-1-20 12:10:48 | 显示全部楼层
别沉了啊 继续定上去  希望达人 指点 谢谢啦
 楼主| 发表于 2010-1-20 20:22:31 | 显示全部楼层
继续顶上去  在线等
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 15:56 , Processed in 0.092243 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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