http://www.csdn.net/expert/topic/460/460639.shtm
主 题:关于SSTAB控件的问题?
作 者:cy_nwau
所属论坛:Visual Basic
问题点数:70
回复次数:28
发表时间:2002-1-6 18:43:13
我的SSTAB控件共有5个TAB,每个TAB上想通过LOAD生成一个LABEL控件数组,这可能要用到容器,但我如何才能让新建立的LABEL进入到指定的TAB上呢?
回复贴子:
回复人: cy_nwau(阿东) (2002-1-6 18:48:20) 得0分
是不是都吃饭去了?
回复人: cy_nwau(阿东) (2002-1-6 18:49:08) 得0分
2小时后回来?如果路过,帮助UP一下好不好?
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 19:23:00) 得0分 Dim i As Integer
For i = FrmMain.LBound To FrmMain.UBound Step 1
FrmMain(i).Visible = False
Next i
FrmMain(SetTSp.SelectedItem.Index - 1).Visible = True
FrmMain(SetTSp.SelectedItem.Index - 1).Move 300, 570, 6135, 3975
FrmMain(SetTSp.SelectedItem.Index - 1).ZOrder 0
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 19:23:24) 得0分
Private Sub SStab_Click()
Dim i As Integer
For i = FrmMain.LBound To FrmMain.UBound Step 1
FrmMain(i).Visible = False
Next i
FrmMain(SetTSp.SelectedItem.Index - 1).Visible = True
FrmMain(SetTSp.SelectedItem.Index - 1).Move 300, 570, 6135, 3975
FrmMain(SetTSp.SelectedItem.Index - 1).ZOrder 0
End Sub
回复人: cy_nwau(阿东) (2002-1-6 19:42:17) 得0分
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
SSTab1.Tab = 0
Load Label1(i)
With Label1(i)
.Caption = i
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
.Visible = True
End With
SSTab1.Tab = 1
Load Label2(i)
With Label2(i)
.Caption = i
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
.Visible = True
End With
Next i
End Sub
回复人: cy_nwau(阿东) (2002-1-6 19:44:01) 得0分
各位请指出问题出在哪里。
shawls(小山(坚持VB,学Delphi和C#))能否对程序做一下解释,小弟好象不懂您的意思,是不是我问题没说清楚。
回复人: cy_nwau(阿东) (2002-1-6 20:04:12) 得0分
shawls(小山(坚持VB,学Delphi和C#)) 请指点一下?
各位路过的也请GZ一下嘛!!!!!!!
回复人: gnoyil(一凡) (2002-1-6 22:47:08) 得0分
gz一下吧!
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 22:54:48) 得0分 : cy_nwau(阿东) (2002-1-6 19:42:17) 得0分
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
if SetTSp.SelectedItem.Index =5 thenlabel1(5).Visible = True '可见
label1(5).Move 300, 570, 6135, 3975 '位置
label1(5).ZOrder 0label2(5).Visible = True
label3(5).Move 300, 570, 6135, 3975
label4(5).ZOrder 0end if
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 22:55:06) 得10分
mail [email protected]
qq9181729
回复人: hand2001(我爱VB不爱我) (2002-1-6 22:58:21) 得0分
简单:
Private Sub Command1_Click()
SSTab1.Tab = 1 '放在第二个TAB
Set Label1.Container = SSTab1
End Sub
回复人: cy_nwau(阿东) (2002-1-7 10:44:39) 得0分
谢谢各位,我试试!然后给分!
回复人: cy_nwau(阿东) (2002-1-7 11:32:08) 得0分
现在我将问题简单化。
我的一个SSTAB控件有5个TAB,我想给5个TAB以不同的ToolTipText,能否实现。
回复人: yangzhaoyu(老妖) (2002-1-7 11:57:29) 得0分
Private Sub Form_Load()
For i = 1 To 3
TabStrip1.Tabs(i).ToolTipText = "tab" + Str(i)
Next
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 11:58:07) 得0分
'当然可以实现了。简单:Dim PerTabWidth As Double
Dim Tips() As StringPrivate Sub Form_Load()
PerTabWidth = SSTab1.Width / SSTab1.Tabs
ReDim Tips(SSTab1.Tabs)
For i = 0 To SSTab1.Tabs - 1
Tips(i) = "这是SSTAB的第 " & i & " 个ToolTipText。没有问题了吧。"
Next
End SubPrivate Sub SSTab1_Click(PreviousTab As Integer)
SSTab1.ToolTipText = SSTab1.Tab
End SubPrivate Sub SSTab1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SSTab1.ToolTipText = Tips(Int(X / PerTabWidth))
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 12:00:05) 得0分
忘了把这段删掉:
Private Sub SSTab1_Click(PreviousTab As Integer)
SSTab1.ToolTipText = SSTab1.Tab
End Sub
回复人: cy_nwau(阿东) (2002-1-7 12:32:15) 得0分
那请教各位高手,我的这段程序实现不了问题出现在哪里?
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
SSTab1.Tab = 0
Load Label1(i)
With Label1(i)
.Caption = i
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
.Visible = True
End With
SSTab1.Tab = 1
Load Label2(i)
With Label2(i)
.Caption = i
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
.Visible = True
End With
Next i
End Sub
回复人: yangzhaoyu(老妖) (2002-1-7 12:49:09) 得0分
不用LOAD
使用SET LABEL1(I)=FORM1.CONTROLS.ADD("VB.LABEL","LABEL1"+TRIM(STR(I)))
回复人: yangzhaoyu(老妖) (2002-1-7 13:02:50) 得10分
Dim LABEL1(5) As Label, LABEL2(5) As Label
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For I = 0 To 5
SSTab1.Tab = 0
Set LABEL1(I) = Form1.Controls.Add("VB.LABEL", "LABEL1" + Trim(Str(I)))
With LABEL1(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL1(I - 1).Left
.Top = LABEL1(I - 1).Top + 2 * LABEL1(I - 1).Height
Else
.Left = 100
.Top = 100
End If
End With
SSTab1.Tab = 1
Set LABEL2(I) = Form1.Controls.Add("VB.LABEL", "LABEL2" + Trim(Str(I)))
With LABEL2(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL2(I - 1).Left
.Top = LABEL2(I - 1).Top + 2 * LABEL2(I - 1).Height
.Visible = True
Else
.Left = 100
.Top = 100
End If
End With
Next I
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 13:26:06) 得0分
Label1(0)、Label2(0)控件在设计时必须放在Form1中,即他们的容器是Form而不是sstab1.
回复人: hand2001(我爱VB不爱我) (2002-1-7 13:42:46) 得0分
再用set label().container=sstab1
还有,不能把Load和set label().container=sstab1同放在Form_Load()中, 必须分开, 否则,达不到效果。这应该是VB的BUG。例子如下:
SSTab1.Tab = 0
For i = 1 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 1 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
End SubPrivate Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
Load Label1(i)
With Label1(i)
.Caption = i & "第一个Label数组"
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
End With
Next
For i = 1 To 5
Load Label2(i)
With Label2(i)
.Caption = i & "第二个Label数组"
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
End With
Next i
End Sub
'*********************************************************************
'而下面这种方式不行,达不到要求:(其实就是把两段一同放在Form_Load事件中)
'你们可以试一试。
'*********************************************************************
'Private Sub Form_Load()
' Me.Width = Screen.Width
' Me.Height = Screen.Height
' SSTab1.Height = Me.Height * 0.95
' SSTab1.Width = Me.Width * 0.95
' SSTab1.Top = (Me.Height - SSTab1.Height) / 2
' SSTab1.Left = (Me.Width - SSTab1.Width) / 2
'
' For i = 1 To 5
' Load Label1(i)
' With Label1(i)
' .Caption = i & "第一个Label数组"
' .Left = Label1(i - 1).Left
' .Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
' End With
' Next
'
' For i = 1 To 5
' Load Label2(i)
' With Label2(i)
' .Caption = i & "第二个Label数组"
' .Left = Label2(i - 1).Left
' .Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
' End With
' Next i
' '**********************************************
' SSTab1.Tab = 0
' For i = 1 To 5
' With Label1(i)
' Set .Container = SSTab1
' .Visible = True
' End With
' Next
'
' SSTab1.Tab = 1
' For i = 1 To 5
' With Label2(i)
' Set .Container = SSTab1
' .Visible = True
' End With
' Next i
'End Sub
'
'
回复人: cy_nwau(阿东) (2002-1-7 17:26:18) 得0分
: yangzhaoyu(老妖)
你的代码我试了一下,不行啊?只能在第一个TAB上出现五个LABEL,第二个TAB上出现不了。什么原因?
Dim LABEL1(5) As Label, LABEL2(5) As Label
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For I = 0 To 5
SSTab1.Tab = 0
Set LABEL1(I) = Form1.Controls.Add("VB.LABEL", "LABEL1" + Trim(Str(I)))
With LABEL1(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL1(I - 1).Left
.Top = LABEL1(I - 1).Top + 2 * LABEL1(I - 1).Height
Else
.Left = 100
.Top = 100
End If
End With
SSTab1.Tab = 1
Set LABEL2(I) = Form1.Controls.Add("VB.LABEL", "LABEL2" + Trim(Str(I)))
With LABEL2(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL2(I - 1).Left
.Top = LABEL2(I - 1).Top + 2 * LABEL2(I - 1).Height
.Visible = True
Else
.Left = 100
.Top = 100
End If
End With
Next I
End Sub
回复人: cy_nwau(阿东) (2002-1-7 17:28:22) 得0分
hand2001(我爱VB不爱我)
您的这一个程序少一个SUB,所以我不能确定您的这段程序写在哪一个事件里的。请明示
SSTab1.Tab = 0
For i = 1 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 1 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
End Subhand2001(我爱VB不爱我)
您的这一个程序少一个SUB,所以我不能确定您的这段程序写在哪一个事件里的。请明示
回复人: hand2001(我爱VB不爱我) (2002-1-7 18:09:33) 得0分
第一个子程序写在Form_Active()事件中。
回复人: cy_nwau(阿东) (2002-1-7 19:11:42) 得0分
谢谢,我再试一试
回复人: cy_nwau(阿东) (2002-1-7 19:12:18) 得0分
谢谢,我再试一试
回复人: cy_nwau(阿东) (2002-1-7 20:02:03) 得0分
各位大侠:
我试了你们的方法,好象都不行怎么办?帮帮助再助我一臂吧!!
回复人: hand2001(我爱VB不爱我) (2002-1-7 20:18:00) 得50分
这个方法肯定可行。请注意:
在form上放置Label1(0),Label2(0),Sstab1三个控件。
其中Label1(0),Label2(0)的容器是Form ,而不是SStab1
——---————————
Private Sub Form_Activate()
SSTab1.Tab = 0
For i = 0 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 0 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
SSTab1.Tab = 0
End SubPrivate Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
Load Label1(i)
With Label1(i)
.Caption = i & "第一个Label数组"
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
End With
Next
For i = 1 To 5
Load Label2(i)
With Label2(i)
.Caption = i & "第二个Label数组"
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
End With
Next i
End Sub
主 题:关于SSTAB控件的问题?
作 者:cy_nwau
所属论坛:Visual Basic
问题点数:70
回复次数:28
发表时间:2002-1-6 18:43:13
我的SSTAB控件共有5个TAB,每个TAB上想通过LOAD生成一个LABEL控件数组,这可能要用到容器,但我如何才能让新建立的LABEL进入到指定的TAB上呢?
回复贴子:
回复人: cy_nwau(阿东) (2002-1-6 18:48:20) 得0分
是不是都吃饭去了?
回复人: cy_nwau(阿东) (2002-1-6 18:49:08) 得0分
2小时后回来?如果路过,帮助UP一下好不好?
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 19:23:00) 得0分 Dim i As Integer
For i = FrmMain.LBound To FrmMain.UBound Step 1
FrmMain(i).Visible = False
Next i
FrmMain(SetTSp.SelectedItem.Index - 1).Visible = True
FrmMain(SetTSp.SelectedItem.Index - 1).Move 300, 570, 6135, 3975
FrmMain(SetTSp.SelectedItem.Index - 1).ZOrder 0
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 19:23:24) 得0分
Private Sub SStab_Click()
Dim i As Integer
For i = FrmMain.LBound To FrmMain.UBound Step 1
FrmMain(i).Visible = False
Next i
FrmMain(SetTSp.SelectedItem.Index - 1).Visible = True
FrmMain(SetTSp.SelectedItem.Index - 1).Move 300, 570, 6135, 3975
FrmMain(SetTSp.SelectedItem.Index - 1).ZOrder 0
End Sub
回复人: cy_nwau(阿东) (2002-1-6 19:42:17) 得0分
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
SSTab1.Tab = 0
Load Label1(i)
With Label1(i)
.Caption = i
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
.Visible = True
End With
SSTab1.Tab = 1
Load Label2(i)
With Label2(i)
.Caption = i
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
.Visible = True
End With
Next i
End Sub
回复人: cy_nwau(阿东) (2002-1-6 19:44:01) 得0分
各位请指出问题出在哪里。
shawls(小山(坚持VB,学Delphi和C#))能否对程序做一下解释,小弟好象不懂您的意思,是不是我问题没说清楚。
回复人: cy_nwau(阿东) (2002-1-6 20:04:12) 得0分
shawls(小山(坚持VB,学Delphi和C#)) 请指点一下?
各位路过的也请GZ一下嘛!!!!!!!
回复人: gnoyil(一凡) (2002-1-6 22:47:08) 得0分
gz一下吧!
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 22:54:48) 得0分 : cy_nwau(阿东) (2002-1-6 19:42:17) 得0分
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
if SetTSp.SelectedItem.Index =5 thenlabel1(5).Visible = True '可见
label1(5).Move 300, 570, 6135, 3975 '位置
label1(5).ZOrder 0label2(5).Visible = True
label3(5).Move 300, 570, 6135, 3975
label4(5).ZOrder 0end if
回复人: shawls(小山(坚持VB,学Delphi和C#)) (2002-1-6 22:55:06) 得10分
mail [email protected]
qq9181729
回复人: hand2001(我爱VB不爱我) (2002-1-6 22:58:21) 得0分
简单:
Private Sub Command1_Click()
SSTab1.Tab = 1 '放在第二个TAB
Set Label1.Container = SSTab1
End Sub
回复人: cy_nwau(阿东) (2002-1-7 10:44:39) 得0分
谢谢各位,我试试!然后给分!
回复人: cy_nwau(阿东) (2002-1-7 11:32:08) 得0分
现在我将问题简单化。
我的一个SSTAB控件有5个TAB,我想给5个TAB以不同的ToolTipText,能否实现。
回复人: yangzhaoyu(老妖) (2002-1-7 11:57:29) 得0分
Private Sub Form_Load()
For i = 1 To 3
TabStrip1.Tabs(i).ToolTipText = "tab" + Str(i)
Next
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 11:58:07) 得0分
'当然可以实现了。简单:Dim PerTabWidth As Double
Dim Tips() As StringPrivate Sub Form_Load()
PerTabWidth = SSTab1.Width / SSTab1.Tabs
ReDim Tips(SSTab1.Tabs)
For i = 0 To SSTab1.Tabs - 1
Tips(i) = "这是SSTAB的第 " & i & " 个ToolTipText。没有问题了吧。"
Next
End SubPrivate Sub SSTab1_Click(PreviousTab As Integer)
SSTab1.ToolTipText = SSTab1.Tab
End SubPrivate Sub SSTab1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SSTab1.ToolTipText = Tips(Int(X / PerTabWidth))
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 12:00:05) 得0分
忘了把这段删掉:
Private Sub SSTab1_Click(PreviousTab As Integer)
SSTab1.ToolTipText = SSTab1.Tab
End Sub
回复人: cy_nwau(阿东) (2002-1-7 12:32:15) 得0分
那请教各位高手,我的这段程序实现不了问题出现在哪里?
'在窗体上做了个SSTAB和LABEL1(0)在第0个TAB上,LABEL2(0)在第1个TAB上。
'目的是想在两个TAB上都会出现5个LABEL,但不行。
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
SSTab1.Tab = 0
Load Label1(i)
With Label1(i)
.Caption = i
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
.Visible = True
End With
SSTab1.Tab = 1
Load Label2(i)
With Label2(i)
.Caption = i
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
.Visible = True
End With
Next i
End Sub
回复人: yangzhaoyu(老妖) (2002-1-7 12:49:09) 得0分
不用LOAD
使用SET LABEL1(I)=FORM1.CONTROLS.ADD("VB.LABEL","LABEL1"+TRIM(STR(I)))
回复人: yangzhaoyu(老妖) (2002-1-7 13:02:50) 得10分
Dim LABEL1(5) As Label, LABEL2(5) As Label
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For I = 0 To 5
SSTab1.Tab = 0
Set LABEL1(I) = Form1.Controls.Add("VB.LABEL", "LABEL1" + Trim(Str(I)))
With LABEL1(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL1(I - 1).Left
.Top = LABEL1(I - 1).Top + 2 * LABEL1(I - 1).Height
Else
.Left = 100
.Top = 100
End If
End With
SSTab1.Tab = 1
Set LABEL2(I) = Form1.Controls.Add("VB.LABEL", "LABEL2" + Trim(Str(I)))
With LABEL2(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL2(I - 1).Left
.Top = LABEL2(I - 1).Top + 2 * LABEL2(I - 1).Height
.Visible = True
Else
.Left = 100
.Top = 100
End If
End With
Next I
End Sub
回复人: hand2001(我爱VB不爱我) (2002-1-7 13:26:06) 得0分
Label1(0)、Label2(0)控件在设计时必须放在Form1中,即他们的容器是Form而不是sstab1.
回复人: hand2001(我爱VB不爱我) (2002-1-7 13:42:46) 得0分
再用set label().container=sstab1
还有,不能把Load和set label().container=sstab1同放在Form_Load()中, 必须分开, 否则,达不到效果。这应该是VB的BUG。例子如下:
SSTab1.Tab = 0
For i = 1 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 1 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
End SubPrivate Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
Load Label1(i)
With Label1(i)
.Caption = i & "第一个Label数组"
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
End With
Next
For i = 1 To 5
Load Label2(i)
With Label2(i)
.Caption = i & "第二个Label数组"
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
End With
Next i
End Sub
'*********************************************************************
'而下面这种方式不行,达不到要求:(其实就是把两段一同放在Form_Load事件中)
'你们可以试一试。
'*********************************************************************
'Private Sub Form_Load()
' Me.Width = Screen.Width
' Me.Height = Screen.Height
' SSTab1.Height = Me.Height * 0.95
' SSTab1.Width = Me.Width * 0.95
' SSTab1.Top = (Me.Height - SSTab1.Height) / 2
' SSTab1.Left = (Me.Width - SSTab1.Width) / 2
'
' For i = 1 To 5
' Load Label1(i)
' With Label1(i)
' .Caption = i & "第一个Label数组"
' .Left = Label1(i - 1).Left
' .Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
' End With
' Next
'
' For i = 1 To 5
' Load Label2(i)
' With Label2(i)
' .Caption = i & "第二个Label数组"
' .Left = Label2(i - 1).Left
' .Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
' End With
' Next i
' '**********************************************
' SSTab1.Tab = 0
' For i = 1 To 5
' With Label1(i)
' Set .Container = SSTab1
' .Visible = True
' End With
' Next
'
' SSTab1.Tab = 1
' For i = 1 To 5
' With Label2(i)
' Set .Container = SSTab1
' .Visible = True
' End With
' Next i
'End Sub
'
'
回复人: cy_nwau(阿东) (2002-1-7 17:26:18) 得0分
: yangzhaoyu(老妖)
你的代码我试了一下,不行啊?只能在第一个TAB上出现五个LABEL,第二个TAB上出现不了。什么原因?
Dim LABEL1(5) As Label, LABEL2(5) As Label
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For I = 0 To 5
SSTab1.Tab = 0
Set LABEL1(I) = Form1.Controls.Add("VB.LABEL", "LABEL1" + Trim(Str(I)))
With LABEL1(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL1(I - 1).Left
.Top = LABEL1(I - 1).Top + 2 * LABEL1(I - 1).Height
Else
.Left = 100
.Top = 100
End If
End With
SSTab1.Tab = 1
Set LABEL2(I) = Form1.Controls.Add("VB.LABEL", "LABEL2" + Trim(Str(I)))
With LABEL2(I)
.Caption = I
.Visible = True
Set .Container = SSTab1
If I <> 0 Then
.Left = LABEL2(I - 1).Left
.Top = LABEL2(I - 1).Top + 2 * LABEL2(I - 1).Height
.Visible = True
Else
.Left = 100
.Top = 100
End If
End With
Next I
End Sub
回复人: cy_nwau(阿东) (2002-1-7 17:28:22) 得0分
hand2001(我爱VB不爱我)
您的这一个程序少一个SUB,所以我不能确定您的这段程序写在哪一个事件里的。请明示
SSTab1.Tab = 0
For i = 1 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 1 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
End Subhand2001(我爱VB不爱我)
您的这一个程序少一个SUB,所以我不能确定您的这段程序写在哪一个事件里的。请明示
回复人: hand2001(我爱VB不爱我) (2002-1-7 18:09:33) 得0分
第一个子程序写在Form_Active()事件中。
回复人: cy_nwau(阿东) (2002-1-7 19:11:42) 得0分
谢谢,我再试一试
回复人: cy_nwau(阿东) (2002-1-7 19:12:18) 得0分
谢谢,我再试一试
回复人: cy_nwau(阿东) (2002-1-7 20:02:03) 得0分
各位大侠:
我试了你们的方法,好象都不行怎么办?帮帮助再助我一臂吧!!
回复人: hand2001(我爱VB不爱我) (2002-1-7 20:18:00) 得50分
这个方法肯定可行。请注意:
在form上放置Label1(0),Label2(0),Sstab1三个控件。
其中Label1(0),Label2(0)的容器是Form ,而不是SStab1
——---————————
Private Sub Form_Activate()
SSTab1.Tab = 0
For i = 0 To 5
With Label1(i)
Set .Container = SSTab1
.Visible = True
End With
Next
SSTab1.Tab = 1
For i = 0 To 5
With Label2(i)
Set .Container = SSTab1
.Visible = True
End With
Next i
SSTab1.Tab = 0
End SubPrivate Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
SSTab1.Height = Me.Height * 0.95
SSTab1.Width = Me.Width * 0.95
SSTab1.Top = (Me.Height - SSTab1.Height) / 2
SSTab1.Left = (Me.Width - SSTab1.Width) / 2
For i = 1 To 5
Load Label1(i)
With Label1(i)
.Caption = i & "第一个Label数组"
.Left = Label1(i - 1).Left
.Top = Label1(i - 1).Top + 2 * Label1(i - 1).Height
End With
Next
For i = 1 To 5
Load Label2(i)
With Label2(i)
.Caption = i & "第二个Label数组"
.Left = Label2(i - 1).Left
.Top = Label2(i - 1).Top + 2 * Label2(i - 1).Height
End With
Next i
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货