在设计时,把SSTab控件的Tab数量设为1个,加上一个frame控件frameNod,索引值为0,frameNod中加一个Label控件lblName等,索引值也为0我想在查询数据库后,让数据在lblName上显示,每Tab上显示10个frameNod
部分程序如下: If Not (rsShow.EOF And rsShow.BOF) Then '打开后若非空记录
rsShow.MoveFirst
countNod = rsShow.RecordCount
X = (SSTab1.Width - frameNod(0).Width * 2) / 6 '每行显示2个
Y = (SSTab1.Height - frameNod(0).Height * 5) / 12 '每列显示5个 For i = 0 To countNod - 1 '循环显示每个记录的数据
If i <> 0 Then '0 是设计时已经有了,就不再增加
Load frameNod(i)
Load lblName(i)
Set lblName(i).Container = frameNod(i) '把lblName(i)放在frameNod(i)
If (i Mod 10) = 0 Then '每10个增加一个Tab
SSTab1.Tabs = SSTab1.Tabs + 1
SSTab1.Tab = Int(i / 10) '把新增加的Tab设成当前的Tab
End If
End If frameNod(i).Caption = rsShow.Fields("编号")
frameNod(i).Left = (frameNod(0).Width + 2 * X) * ((i Mod 10) Mod 2) + 2 * X
frameNod(i).Top = (frameNod(0).Height + 2 * Y) * Int((i Mod 10) / 2) + 2 * Y
frameNod(i).Visible = True lblName(i) = "名称:" + rsShow.Fields("名称") 'lblName
lblName(i).Left = lblName(0).Left
lblName(i).Top = lblName(0).Top
lblName(i).Visible = True rsShow.MoveNext
Next i
Else
MsgBox "现在库中还没有信息,请先加入数据
Exit Sub
End If
如果检索出来有12条记录,那么到第11条记录时,就增加一个Tab,然后用SSTab1.Tab = Int(i / 10)这条语句把新增加的Tab设成当前的Tab,本以为新增加的frameNod会显示在当前的Tab上,但问题是还显示在头一个Tab里,请问设置如何才能让它显示在第二页上?
有些时间没有来了。向各位兄弟问个好!!'**************************************要清楚回答你的问题,首先要弄清选项卡是如何工作的。
在习惯上,我们在单击TAB(0),TAB(1)时,选项卡总是显示我们所在卡上分好组的控件,让我们发生了一个错觉。好象选项卡是给我们分好层了。其实,选择并没有为我们分好层,所有放在选卡上的控件全部都是同一层次的。之所以给我们错觉,是因为选项卡会记住每个卡的控件名。如是不是这个卡上的,将其的LEFT值设置为一个很大的负值,即将其移到最左边。我们可以做一个实验:在窗体上放一个先项卡:SSTAB1,然后在TAB(0)上放一个COMMAND1,在TAB(1)上放一个COMMAND2,在TAB(2)上放一个COMMAND3,在窗体上再放一个COMMAND4,Private Sub Command4_Click()
Command2.Left = 780
Command3.Left = Command2.Left+800
End Sub
当你单击COMMAND4时,无论你在那个选项卡,COMMAND2,COMMAND3总能看见。
呵呵。原来SSTAB是这样工作的。
所以,建议你在每个TAB上放一个PICTURE,以PICTUREBOX作为容器,然后在PICTUREBOX中动态添加控件即可。写了一大通,言不成章,希望楼主能明白我的意思。。 :-)
就可以显示出来了