当前位置:编程学习 > VB >>

SSTab控件中,不同页面里的控件出现重叠?

我在SSTab控件的三个面中各放置一个MSFlexGrid,但在运行时单击不同页面时,有时会出现放在不同的两个页面中的控件出现重叠现象,即同时两个表都显示出来.删除重叠显示出来的表格再重建后有时显示正常,再显示时又重叠了.哪位知道原因?(可能微软开发时存在错误!) --------------------编程问答-------------------- 你可以用Visiable控制轮流显示,或换个控件,叫MicroSoft Tab Dialog... --------------------编程问答-------------------- 你用的是sstab吗?

应该没问题的
贴代码看看 --------------------编程问答-------------------- 没有什么代码,只是在SSTab的三个页面中各放了一个表格MSFlexGrid控件。当单第三个页面使之成为当前后,第二个页面的表格与第三个面的表格同时显示出来。太奇怪了。 --------------------编程问答-------------------- 我用的是SSTab,即MicroSoft Tabbed Dialog Control 6.0 --------------------编程问答-------------------- 只在窗体大小改变事件有如下代码:
Private Sub Form_Resize()
  SSTab2.Move 0, MSFG1.Height, Me.ScaleWidth, Me.ScaleHeight MSFG1.Height - Pic1.Height
  MSFGpl.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360
  MSFGsjbc.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360
  'MSFGjsbc.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360
End Sub
--------------------编程问答-------------------- 改变不同页里的 控件大小的时候 先让 SSTab 显示出控件所在的页后 再改变大小   --------------------编程问答--------------------


'我做了以下几个示例:
'在设计的时候,分别在不同的页面下加入控件.无论什么控件.
'比如:你加了一个控件A至第二个页面.
'当你在第一个页面的时候,你设置了控件A的位置属性,你会发现,控件A本来在第二个页面的,现在到了第一个页面.
'在其它页面同理.注意哦,控件A在第一页面与第二个页面都能看到了.
'再试了一下.控件里面的事件.晕,发现一样.也就是说没有增加多的控件出来.只是在每个页面都能见到了.

--------------------编程问答-------------------- 删除了重新放上一个,是不是自己修改了什么属性忘了
或者先放几个Frame再在Frame上放别的

引用 3 楼 zhendero 的回复:
没有什么代码,只是在SSTab的三个页面中各放了一个表格MSFlexGrid控件。当单第三个页面使之成为当前后,第二个页面的表格与第三个面的表格同时显示出来。太奇怪了。
--------------------编程问答-------------------- 也可以写再单击的事件里 

Private Sub SSTab1_Click(PreviousTab As Integer)

Select Case SSTab1.Tab
    Case 0
     Me.Picture1.Width = 1000
    Case 1
     Command1.Width = 2000

End Select
End Sub

--------------------编程问答-------------------- 你控件是不是放在SSTAB容器里的?还是放在窗体容器里的?应该不会有你说的问题的,除非你的有些控件放错容器了 --------------------编程问答-------------------- 对头,估计是放在窗体上了

引用 10 楼 ftz820127 的回复:
你控件是不是放在SSTAB容器里的?还是放在窗体容器里的?应该不会有你说的问题的,除非你的有些控件放错容器了
--------------------编程问答-------------------- SSTAB控件是容器,与TabStrip 控件的用法有不同,在设计状态下,可用鼠标选择TAB页。但在各页添加其它控件不要采用双击工具箱控件方法添加,应用选中控件然后在TAB页用鼠标绘制,不然所添加控件为各TAB页共有。当然也可采用TabStrip 控件用以下方法达你目的。 
TabStrip 控件不是容器。要想包含实际页面和它们的对象,必须用 Frame 控件或者其它容器,它们的大小必须与控件中所有 Tab 对象共享的内部区域匹配。如采用2个Frame控件,各自Frame控件放置你所需其它控件,使用如下代码: 
Option Explicit 
Dim flag As Boolean 

Private Sub Form_Load() 
Frame1.Visible = True 
Frame2.Visible = False 
End Sub 

Private Sub TabStrip1_Click() 
If flag Then 
Frame1.Visible = True 
Frame2.Visible = False 
Else 
Frame1.Visible = False 
Frame2.Visible = True 
End If 
flag = Not flag 
End Sub 

详细请参阅:http://iask.sina.com.cn/b/8668146.html?SHID=1218007367.927zhudingyun808(本人)的答复
该网址下有相应的工程压缩文件可下载。 --------------------编程问答-------------------- 將,msf放在sstab控件內 --------------------编程问答--------------------
引用 10 楼 ftz820127 的回复:
你控件是不是放在SSTAB容器里的?还是放在窗体容器里的?应该不会有你说的问题的,除非你的有些控件放错容器了
 

放在容器里也经常遇到这样的问题的  只要在代码中改变了控件位置 大小  当时 我为这个痛苦了很长时间才解决的  --------------------编程问答--------------------
引用 5 楼 zhendero 的回复:
只在窗体大小改变事件有如下代码: 
Private Sub Form_Resize() 
  SSTab2.Move 0, MSFG1.Height, Me.ScaleWidth, Me.ScaleHeight MSFG1.Height - Pic1.Height 
  MSFGpl.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360 
  MSFGsjbc.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360 
  'MSFGjsbc.Move 10, 360, SSTab2.Width - 20, SSTab2.Height - 360 
End Sub 

SSTab就是通过移动控件位置实现隐藏控件的
也就是说,当页面切换到1的时候,它会自动把其它页面的控件移动到left=10000之类的位置,实现这些控件的隐藏
MSFGsjbc.Move 这样的代码很有可能把本该隐藏的控件显示出来 --------------------编程问答-------------------- 楼上正解!
sstab控件容易给人一种误解,好像它的每一个tab都是一个独立的容器,其实,一个sstab控件只有一个容器,你放在sstab里的所有控件就都放在这唯一一个容器里,它只是在我们选择某个tab的时候,自动把“其他”tab里的控件移到不可见的地方而已,而楼主的那几个move,把它们又给移回来了,当然就重叠在一起了。
我原来也遇到过这个问题,而且也很长时间迷惑不解,查了很多资料才知道这个秘密。
知道了原因,如何解决就太简单了。 --------------------编程问答-------------------- 15楼的解释经实验完全正确,所以楼主的那些Move产生了问题.
经此又对sstab控件的使用加深一步. --------------------编程问答-------------------- 这个还是头一次知道,感谢! --------------------编程问答-------------------- 而且对于SSTAB控件里的页如果包含ComboBox的话,会显示不正常,因为ComboBox的高度数据只读,6的楼我也试验了一下,一样不行。 --------------------编程问答--------------------
引用 19 楼 dinowj 的回复:
而且对于SSTAB控件里的页如果包含ComboBox的话,会显示不正常,因为ComboBox的高度数据只读,6的楼我也试验了一下,一样不行。


ComboBox 不用去改变高度 只要 改变宽度就可以了 

如果ComboBox要改高度 请改字体 大小
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,