要做一个设计,整个程序是基于对话框的那种。
在主页面上有一个主TAB控件,然后在这个主TAB的各个页面里面还有许多子tab页面。
要求是主TAB的A页面里面的子TAB的某个页面没有保存的话,那么主TAB页面的B页面里面的子tab页面就没法显示。说的太麻烦了,说简单点,就是当对话框都不关闭时,而某些对话框中的内容是根据另外的对话框的内容来显示的,我们如何提示信息?我想问一下,类似这样子的要求应该如何设计,如何实现。谢谢大家。

解决方案 »

  1.   

    当由主TAB的A页面里面的子TAB的某个页面 转到 主TAB页面的B页面里面的子tab页面时
    那么主TAB的A页面里面的子TAB的某个页面将要隐藏,在它隐藏之前可以先作个判断
    判断它是否保存,如果保存就直接让主TAB页面的B页面里面的子tab页面显示
    如果没有,就提示保存,并且让该页面显示,让其它页面全都隐藏
      

  2.   

    在tab控件的父窗口中响应TCN_SELCHANGING通知(WM_NOTIFY),如果你允许切换tab,返回FALSE,如果你不想这种切换发生,返回TRUE如果你使用的是CPropertyPage,重载OnSetActive即可,但是你的这种对话框显然不属于这种情况。
      

  3.   

    谢谢楼上三位。特别谢谢zhangting1987。
    to:zhangting1987:你的这种办法是我想到的第一种解决方法,不过这个设计有个毛病,就是如果用户想根据另外的页面来设置本页面的数据的话,每切换一次就要保存一次才行,这样很麻烦的。有没有更好一点的设计方式。
    PS:我更关注的是设计思想呵,具体实现就自己来就好了。
    谢谢~
      

  4.   

    要求是主TAB的A页面里面的子TAB的某个页面没有保存的话,那么主TAB页面的B页面里面的子tab页面就没法显示。 这句我有点误解吗,不是每切换一次就要保存一次吗?不保存不是不让其它的页面显示吗
      

  5.   

    to:zhangting1987
    哦,是这样的,页面之间是存在业务逻辑的。
    我的初衷是,只有当某些特定的页面没有保存,而我又想切换到另外的特定的页面的话,才会显示错误。
    举个例子:
    3个页面:A页面是总的学生列表;B页面是用来修改学生成绩的,C页面是用来查看学生成绩的。
    我是想实现这样的效果:
    当B页面未保存时,C页面无法正常显示,但是可以切换到A页面上去。
    我可以部分使用那种办法的,不过总觉得那样设计的不伦不类的。
      

  6.   

    补充一下:我不仅仅会从B页面上转换到C页面上去的,我可以从任意页面上转换到C页面上。
    我很关注的一个问题是,我如何把业务逻辑从代码设计中剥离。总感觉设计起来跟业务逻辑缠的太深了,以后扩展起来就难了。
      

  7.   

    利用监听,把有关系的页面之间可以进行监听
    就像你说的那个例子,你可以让C页面去监听B页面
    当B页面修改时,就向C页面发送消息,C页面接收到消息,判断是B页面发送过来,就用一个变量记录下来,表示B页面已经修改
    在B页面显示之前利用那个变量先进行判断
      

  8.   

    切换到C页面之前(无论从哪个页面切换过来),你会收到TCN_SELCHANGING通知,这个通知是唯一的机会让你决定是否真正切换。此时你判断B页面的内容,如果B内容阻止你打开C页面,你应该返回TRUE,此时C页面不会显示(直接返回到切换前的页面),如果B内容允许你打开C页面,你应该返回FALSE,此时C页面将会显示,切换完成。