Ошибка при удалении контрола из массива

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Ошибка при удалении контрола из массива

Сообщение stanislavmg » 21.02.2008 (Чт) 11:59

Помогите разобраться с проблемой.
Загружаю контрол, затем пытаюсь его удалить и получаю ошибку "Unable to within this context"
'На форме один TextBox с именем Text1, индексом 0 и высотой 325.
Код:
Код: Выделить всё
'На форме один TextBox с именем Text1, индексом 0 и высотой 325.
Option Explicit
Dim HeightForm As Integer

Private Sub Form_Load()
   HeightForm = 3000
   Me.Height = HeightForm
   Add_kontrol 5
End Sub

Private Sub Form_Resize()
   Dim Raznost As Integer, i As Integer
   i = Me.Height - HeightForm
   Raznost = i / 315
   If Raznost > 0 Then Add_kontrol Raznost
   If Raznost < 0 Then Rem_kontrol Abs(Raznost) 'тут возникает ошибка
End Sub

Private Sub Rem_kontrol(ByVal RemKol As Byte)
   Dim Index As Integer, N As Integer
   'Удаление контролов с последнего.
   For N = 1 To RemKol
      Index = Text1.Count - 1
      Unload Text1(Index)
   Next N
End Sub

Private Sub Add_kontrol(ByVal AddKol As Byte)
   Dim y As Integer, Index As Integer, N As Integer
   'Добавление контролов.
   For N = 1 To AddKol
      Index = Text1.Count
      y = Text1(Index - 1).Top + Text1(Index - 1).Height
      Load Text1(Index)
      Text1(Index).Top = y
      Text1(Index).Visible = True
   Next N
End Sub



При размещении на форме кнопки, удаление контролов по ее нажатию производится без проблем. Что за беда?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.02.2008 (Чт) 12:19

Приведенный код не пробовал.

Но в нем ты удаляешь контролы не с последнего.

Скорее надо:

Код: Выделить всё
For N = Text1.Count - 1 To RemKol Step -1


P.S
А почему просто не использовать Grid - не городя огород?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Сообщение stanislavmg » 21.02.2008 (Чт) 13:22

То есть как не с последнего? :shock:
Index = Text1.Count - 1 - индекс последнего контрола.
RemKol - количество удаляемых контролов.
При каждом проходе цикла определяется индекс последнего контрола, затем он удаляется.

Grid не катит - контролы нужны разные.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 21.02.2008 (Чт) 14:05

Проблема в том, что невозможно из некоторых событий выгружать контролы загруженные методом Load. Одно из таких событий form_resize.

stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Сообщение stanislavmg » 21.02.2008 (Чт) 14:08

А есть возможность загрузить другим методом?

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 21.02.2008 (Чт) 14:24


stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Сообщение stanislavmg » 21.02.2008 (Чт) 16:10

Спасибо. Буду пробовать.

stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Сообщение stanislavmg » 21.02.2008 (Чт) 16:25

В общем обошел эту гадость через таймер.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.02.2008 (Чт) 19:01

stanislavmg писал(а):В общем обошел эту гадость через таймер.


А не проще было прокручивать форму/фрэйм?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

stanislavmg
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.02.2008 (Чт) 11:54

Сообщение stanislavmg » 22.02.2008 (Пт) 9:26

Этот вариант к сожалению не подходит.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 90

    TopList