Изменить идексацию массива элементов во время выполнения - VB

Узнай цену своей работы

Формулировка задачи:

Собственно вопрос в теме. Как изменить идекцию массива управления во время выполнения программы? Поясню: в программе динамически создается массив из элементов, например MSFlexGrid, т.е. изначально есть MSFlexGrid1(0), далее с помощью процедуры Load(MSFlexGrid1(k)) можно создать любое количество этих таблиц (процедуры переключения между ними я уже написал), где k-счетчик. Предположим, что пользователь создал массив и с индексами 0,1,2,3,4. Пользователь по нажатию кнопки может удалить любой из массива с помощью процедуры UnLoad(MSFlexGrid1(i)), где i - номер удаляемого элемента из массива. Например, если i=2 у него остается массив с индексами 0,1,3,4. Как переидексировать этот массив, чтобы у него остался массив из 0,1,2,3 (т.е. изменить индексы для элементов 3 и 4 на 2 и 3 соответственно)?

Решение задачи: «Изменить идексацию массива элементов во время выполнения»

textual
Листинг программы
<font color="00AA00">'Форма</font>
<font color="blue">Dim</font> mCol <font color="blue">As</font> Collection

<font color="blue">Private</font> <font color="blue">Function</font> NewTab()
<font color="blue">Dim</font> x <font color="blue">As</font> <font color="blue">Integer</font>
<font color="blue">Dim</font> c <font color="blue">As</font> <font color="blue">New</font> <font color="blue">MyClass</font>
    x = mnuWindow.Count
    Load mnuWindow(x)
    mnuWindow(x).Caption = Timer
    <font color="blue">Set</font> c.Menu = mnuWindow(x)
    <font color="blue">Set</font> c.CTab = TabStrip1.Tabs.Add(, , Timer)
    <font color="blue">Set</font> c.Strip = TabStrip1
    mCol.Add c
<font color="blue">End</font> <font color="blue">Function</font>

<font color="blue">Private</font> <font color="blue">Sub</font> mnuWindow_Click(Index <font color="blue">As</font> <font color="blue">Integer</font>)
<font color="blue">Dim</font> c <font color="blue">As</font> <font color="blue">MyClass</font>
    <font color="blue">For</font> <font color="blue">Each</font> c <font color="blue">In</font> mCol
        <font color="blue">If</font> c.Menu.Index = Index <font color="blue">Then</font>
            c.CTab.Selected = True
            <font color="blue">Exit</font> <font color="blue">Sub</font>
        <font color="blue">End</font> <font color="blue">If</font>
    <font color="blue">Next</font>
<font color="blue">End</font> <font color="blue">Sub</font>

<font color="00AA00">'Класс MyClass</font>
<font color="blue">Dim</font> <font color="blue">WithEvents</font> lStrip <font color="blue">As</font> TabStrip
<font color="blue">Dim</font> lMenu <font color="blue">As</font> Menu
<font color="blue">Dim</font> lTab <font color="blue">As</font> ComctlLib.Tab

<font color="blue">Public</font> <font color="blue">Property</font> <font color="blue">Set</font> Menu(rhs <font color="blue">As</font> Menu)
    <font color="blue">Set</font> lMenu = rhs
<font color="blue">End</font> <font color="blue">Property</font>

<font color="blue">Public</font> <font color="blue">Property</font> <font color="blue">Set</font> CTab(rhs <font color="blue">As</font> ComctlLib.Tab)
    <font color="blue">Set</font> lTab = rhs
<font color="blue">End</font> <font color="blue">Property</font>

<font color="blue">Public</font> <font color="blue">Property</font> <font color="blue">Set</font> Strip(rhs <font color="blue">As</font> ComctlLib.TabStrip)
    <font color="blue">Set</font> lStrip = rhs
<font color="blue">End</font> <font color="blue">Property</font>

<font color="blue">Private</font> <font color="blue">Sub</font> lStrip_Click()
    lMenu.Checked = lStrip.SelectedItem.Index = lTab.Index
<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы