Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB 一問: 如何 Redim 控制項陣列的維數 ??

0 views
Skip to first unread message

物質化觀點

unread,
Jul 14, 2001, 5:10:18 AM7/14/01
to
※ 引述《kevin...@bbs.pchome.com.tw (QQ老公)》之銘言:
> ※ 引述《Wildk...@bbs.cs.nthu.edu.tw (物質化觀點)》之銘言:
> > 小弟想要 dynamically 變更一個 textbox 構成的陣列.
> > 試過直接 Redim 但不成功, 不知道該如何做才可達到.
> > 麻煩哪位能手給點提示好嗎? Thanks!!
> > PS: VB 是不是只允許一維的控制項陣列 ?
> redim 在 VB 中, 只允許最後一維可以 redim (若只有一維, 當然可以 redim)


請問如果要 dynamically 在 run-time 加一個 TextBox 到現有的

TextBox 控制項陣列, 在 redim 過後, 要怎麼給定新 textbox 的 name ??

(特別是在 Name 裡牽涉到 Index 的部份, 該放 string 還是 value ??)

比如說....

Dim WithEvents addedIVRaange As VB.TextBox
-------------------------------------------

Private Sub add_Click()

RangeNo% = RangeNo% + 1

ReDim RangeMax(IVRangeNo%)

Set addedIVRaange = Controls.Add("VB.TextBox", "NAME" , form_RangeConfig)
^^^^^^^
??????


--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: spin.phys.ntu.edu.tw

QQ老公

unread,
Jul 16, 2001, 12:26:59 AM7/16/01
to
※ 引述《Wildk...@bbs.cs.nthu.edu.tw (物質化觀點)》之銘言:
> 小弟想要 dynamically 變更一個 textbox 構成的陣列.
> 試過直接 Redim 但不成功, 不知道該如何做才可達到.
> 麻煩哪位能手給點提示好嗎? Thanks!!
> PS: VB 是不是只允許一維的控制項陣列 ?
> 請問如果要 dynamically 在 run-time 加一個 TextBox 到現有的
> TextBox 控制項陣列, 在 redim 過後, 要怎麼給定新 textbox 的 name ??
> (特別是在 Name 裡牽涉到 Index 的部份, 該放 string 還是 value ??)
> 比如說....
> Dim WithEvents addedIVRaange As VB.TextBox
> -------------------------------------------
> Private Sub add_Click()
> RangeNo% = RangeNo% + 1
> ReDim RangeMax(IVRangeNo%)
> Set addedIVRaange = Controls.Add("VB.TextBox", "NAME" , form_RangeConfig)
> ^^^^^^^
> ??????

我大致上了解你的做法, 但我不懂為何要用到陣列呢?

在執行階段,可用 Load 和 Unload 陳述式新增和移除控制項陣列中的控制項,
然而,新增的控制項必須是現有控制項陣列的元素。在大多數情況下,您必須先
在設計階段建立一個 Index 屬性為 0 的控制項,然後在執行階段使用如下語法:

Load object(index%) '新增
Unload object(index%) '釋放

上述的用法是指, 你必須在設計階段時, 先建立一個控制項陣列, 其陣列元素為 0
即 index 為 0
例如 :
先放一個textbox 在 form上, 再複製它則會建立兩個 textbox, 則分別為
textbox(0), textbox(1), 再刪掉 textbox(1), 如此便建立好一個 index
屬性為 0 的控制項陣列了, 再將其屬性 visible 設為 false , 再放上兩個
button, 一個為 command1 (用來新增控制項), 另一個為 command2 (用來刪除控制項)
接著用如下的寫法在執行階段建立, 希望我的範列對你有幫助囉~~~

Dim RangeNo As Integer

Private Sub Command1_Click()
If RangeNo% = 0 Then
Text1(0).Visible = True
Text1(0).Text = "Text(0)"
Else
Load Text1(RangeNo%)
With Text1(RangeNo%)
.Visible = True
.Top = Text1(RangeNo% - 1).Top + 400
.Text = "Text(" & RangeNo% & ")"
End With
End If


RangeNo% = RangeNo% + 1

End Sub

Private Sub Command2_Click()
RangeNo% = RangeNo% - 1
If RangeNo% <= 0 Then
Text1(0).Visible = False
RangeNo% = 0
Else
Unload Text1(RangeNo%)
End If
End Sub
--
[1;32m※ Origin: [33m電腦家庭 [37m<bbs.pchome.com.tw> [m
[1;31m◆ From: [36mpc075.pchome.com.tw [m

0 new messages