Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить значение из комбобокса / 12 сообщений из 12, страница 1 из 1
28.11.2010, 01:10
    #36981286
bosscs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
Код: plaintext
1.
2.
3.
4.
5.
k =  0 
For i =  1  To Form1.Combo1.ListCount
Form1.Combo1.RemoveItem "1"
Form1.Combo1.Refresh
Next
End Sub

Пишет ошибку runtime error 5 invalid procedure call or argument. Почему?
...
Рейтинг: 0 / 0
28.11.2010, 01:15
    #36981297
bosscs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
Я вообще какой-то ужас написал) Совсем голова не варит уже. В общем нужно пройтись по записям комбобокса, и если она равна 1 - удалить ее.
...
Рейтинг: 0 / 0
28.11.2010, 01:16
    #36981301
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
А у вас точно есть В комбо символьное значение "1"?
Иначе тогда надо удалять по индексу
Код: plaintext
1.
2.
3.
4.
i = Form1.Combo1.ListCount
do while i >  0 
   Form1.Combo1.RemoveItem i
   i = Form1.Combo1.ListCount
end do
...
Рейтинг: 0 / 0
28.11.2010, 01:18
    #36981305
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
AndreTM,

тока нумерация индексов с нуля и до ListCount-1 ))
...
Рейтинг: 0 / 0
28.11.2010, 01:22
    #36981310
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
bosscsЯ вообще какой-то ужас написал) Совсем голова не варит уже. В общем нужно пройтись по записям комбобокса, и если она равна 1 - удалить ее.
А, ну тогда
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  1 
do while i <= Form1.Combo1.ListCount
   if Form1.Combo1.Item(i) =  1  then
      Form1.Combo1.RemoveItem i
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
...
Рейтинг: 0 / 0
28.11.2010, 01:23
    #36981313
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
Shocker.Proтока нумерация индексов с нуля и до ListCount-1 ))
Как ТС просил - так и отвечено. Может, у него Option Base 1 .
...
Рейтинг: 0 / 0
28.11.2010, 01:28
    #36981319
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
AndreTMShocker.Proтока нумерация индексов с нуля и до ListCount-1 ))
Как ТС просил - так и отвечено. Может, у него Option Base 1 .

Option Base не влияет на нумерацию индексов.
А вот вопрос, ты для офиса (хи-хи, любитель офиса) код писал?
А то ТС-то среду не указал, однако.
А в VB-шном комбобоксе Item нету ))
...
Рейтинг: 0 / 0
28.11.2010, 01:59
    #36981334
bosscs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Command1_Click()
z = Form1.Combo1.ListCount -  1 
For i =  0  To z
Form1.Combo1.ListIndex = i
If Form1.Combo1.Text = "1" Then
Form1.Combo1.RemoveItem i
z = z -  1 
ElseIf Form1.Combo1.Text = "2" Then
z = z -  1 
End If
Next
End Sub
В общем проблема в том, что при удалении записей количество итераций цикла нужно уменьшить.
...
Рейтинг: 0 / 0
28.11.2010, 02:09
    #36981344
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
Shocker.ProА вот вопрос, ты для офиса (хи-хи, любитель офиса) код писал?
А то ТС-то среду не указал, однако.
А в VB-шном комбобоксе Item нету ))
Каюсь, грешен...
Смотрим:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  0 
do while i < Form1.Combo1.ListCount
   if Left(Form1.Combo1.List(i), 1 ) = "1" then
      Form1.Combo1.RemoveItem (i)
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
...
Рейтинг: 0 / 0
28.11.2010, 03:09
    #36981374
Удалить значение из комбобокса
AndreTMСмотрим:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
i =  0 
do while i < Form1.Combo1.ListCount
   if Left(Form1.Combo1.List(i), 1 ) = "1" then
      Form1.Combo1.RemoveItem (i)
   else
      i = i +  1 
   end if
loop
Form1.Combo1.Refresh
и зачем на каждом шаге дергать несчастный Combo1 ?
в Do Loop цикле граница вычисляется на каждом шаге, в For - один раз перед выполнением цикла. Почувствуйте разницу..
Код: plaintext
1.
2.
3.
4.
 For i = Combo1.ListCount - 1  to  0  Step - 1 
   If {some condition} Then 
      {do something}
   End If
Next i
...
Рейтинг: 0 / 0
28.11.2010, 03:19
    #36981379
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить значение из комбобокса
пробуй камнем,

Ну это так, тупо и прямо. И чтобы напомнить ТС как раз о невозможности использования цикла со счетчиком с положительным инкрементом. Оптимизация алгоритма в задачу не входила
...
Рейтинг: 0 / 0
28.11.2010, 03:27
    #36981383
Удалить значение из комбобокса
AndreTM,
это не оптимизация, это азбука. ИМХО, конечно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удалить значение из комбобокса / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]