Страница: 1 |
Страница: 1 |
Вопрос: Проблема с выгружением объектов
Добавлено: 20.01.06 11:35
Автор вопроса: Tamplier | ICQ: 298742928
На форме стоят:
КомбоБокс, ТекстБокс(индекс 1), АпДаун(индекс 1)
Код:
Private Sub cmbNumberOfTrueAnswers_Click()
If Val(cmbNumberOfTrueAnswers.Text) > Questions(CurrentQuestion).NumberOfTrueAnswers Then
For i = txtTrueAnswer.UBound + 1 To Val(cmbNumberOfTrueAnswers.Text)
Load txtTrueAnswer(i)
txtTrueAnswer(i).Left = txtTrueAnswer(i - 1).Left + 960
Load udTrueAnswer(i)
udTrueAnswer(i).Left = udTrueAnswer(i - 1).Left + 960
' udTrueAnswer(i).BuddyControl = "txtTrueAnswer(" & i & ")"
txtTrueAnswer(i).Text = 1
For j = 1 To txtTrueAnswer.UBound - 1
For k = 1 To txtTrueAnswer.UBound - 1
If StrComp(txtTrueAnswer(i).Text, txtTrueAnswer(k).Text, vbBinaryCompare) = 0 Then txtTrueAnswer(i).Text = Val(txtTrueAnswer(i).Text) + 1
Next
Next
' udTrueAnswer(i).Min = udTrueAnswer(i - 1).Min + 1
Next
For i = 1 To Val(cmbNumberOfTrueAnswers.Text)
txtTrueAnswer(i).Visible = True
udTrueAnswer(i).Visible = True
Next
ElseIf Val(cmbNumberOfTrueAnswers.Text) < Questions(CurrentQuestion).NumberOfTrueAnswers Then
For i = txtTrueAnswer.UBound To Val(cmbNumberOfTrueAnswers.ListIndex) + 2 Step -1
txtTrueAnswer(i).Visible = False
Unload txtTrueAnswer(i)
udTrueAnswer(i).Visible = False
Unload udTrueAnswer(i)
Next
End If
If Val(cmbNumberOfTrueAnswers.ListIndex) = 0 Then
lblTrueAnswer.Caption = "Правильный ответ"
Else
lblTrueAnswer.Caption = "Правильные ответы"
End If
Questions(CurrentQuestion).NumberOfTrueAnswers = Val(cmbNumberOfTrueAnswers.Text)
udNumberOfAnswers.Min = cmbNumberOfTrueAnswers.ListIndex + 1
End Sub
Кокда я уменьшаю индекс выбранного элемента в комбобоксе вб начинат материться, что, мол, не могу выгрузить... :(
Что можно сделать?
Процедура переделана под данную ситуацию, изначальный вид:
Private Sub cmbNumberOfTrueAnswers_Click()
If Val(cmbNumberOfTrueAnswers.Text) > Questions(CurrentQuestion).NumberOfTrueAnswers Then
For i = txtTrueAnswer.UBound + 1 To Val(cmbNumberOfTrueAnswers.Text)
Load txtTrueAnswer(i)
txtTrueAnswer(i).Left = txtTrueAnswer(i - 1).Left + 960
Load udTrueAnswer(i)
udTrueAnswer(i).Left = udTrueAnswer(i - 1).Left + 960
txtTrueAnswer(i).Text = 1
For j = 1 To txtTrueAnswer.UBound - 1
For k = 1 To txtTrueAnswer.UBound - 1
If StrComp(txtTrueAnswer(i).Text, txtTrueAnswer(k).Text, vbBinaryCompare) = 0 Then txtTrueAnswer(i).Text = Val(txtTrueAnswer(i).Text) + 1
Next
Next
' udTrueAnswer(i).Min = udTrueAnswer(i - 1).Min + 1
Next
ElseIf Val(cmbNumberOfTrueAnswers.Text) < Questions(CurrentQuestion).NumberOfTrueAnswers Then
For i = txtTrueAnswer.UBound To Val(cmbNumberOfTrueAnswers.ListIndex) + 2 Step -1
txtTrueAnswer(i).Visible = False
' Unload txtTrueAnswer(i)
udTrueAnswer(i).Visible = False
' Unload udTrueAnswer(i)
Next
End If
If Val(cmbNumberOfTrueAnswers.ListIndex) = 0 Then
lblTrueAnswer.Caption = "Правильный ответ"
Else
lblTrueAnswer.Caption = "Правильные ответы"
End If
Questions(CurrentQuestion).NumberOfTrueAnswers = Val(cmbNumberOfTrueAnswers.Text)
udNumberOfAnswers.Min = cmbNumberOfTrueAnswers.ListIndex + 1
End Sub
CurrentQuestion, Questions(CurrentQuestion).NumberOfTrueAnswers - известные величины
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 20.01.06 13:02
In some situations you are not allowed to unload a form or a control on a form. This error has the following causes and solutions:
There is an Unload statement in the Paint event for the form or for a control on the form that has the Paint event.
Remove the Unload statement from the Paint event.
There is an Unload statement in the Change, Click, or DropDown events of a ComboBox.
Remove the Unload statement from the event.
There is an Unload statement in the Scroll event of an HScrollBar or VScrollBar control.
Remove the Unload statement from the event.
There is an Unload statement in the Resize event of a Data, Form, MDIForm, or PictureBox control.
Remove the Unload statement from the event.
There is an Unload statement in the Resize event of an MDIForm that is trying to unload an MDI child form.
Remove the Unload statement from the event.
There is an Unload statement in the RePosition event or Validate event of a Data control.
Remove the Unload statement from the event.
There is an Unload statement in the ObjectMove event of an OLE Container control.
Remove the Unload statement from the event.
Номер ответа: 2
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 20.01.06 13:28
365 Unable to unload within this context Нет возможности в данном контексте произвести выгрузку
Номер ответа: 3
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #3
Добавлено: 21.01.06 13:00
Я это заметил :\
Так что? В отдельную процедуру выносить?
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 21.01.06 13:26
Да, причём всё равно нельзя вызывать эту процедуру из перечисленных событий.
Номер ответа: 5
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #5
Добавлено: 22.01.06 15:18
ну я про что и говорю:
вынести выгрузку в отдельную процедуру и вызывать ее из этих событий
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 22.01.06 15:34
Нет. Её нельзя вызывать из этих событий. Глубина вложенности значения не имеет.
Номер ответа: 7
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #7
Добавлено: 23.01.06 16:33
а вот это плохо. Лан, с визиблом придется работать