Combo ошибка

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

Combo ошибка

Сообщение abbot » 26.07.2003 (Сб) 9:38

Не пойму почему выдается ошибка Text Property is read-only в следующем участке кода и как можно ее обойти:

cboPosition.Text = cboPosition.List(GetIndex(cboPosition, rs.Fields("AssignedPersonPositionID")))

Public Function GetIndex(ByRef oCombo As ComboBox, ByVal nID As Long) As Long
Dim i As Long
Dim nIndex As Long
nIndex = -1
With oCombo
For i = 0 To .ListCount - 1
If .ItemData(i) = nID Then
nIndex = i: Exit For
End If
Next i
End With
GetIndex = nIndex
End Function
He is watching

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.07.2003 (Вс) 11:10

Скорее всего потому, что cboPosition.Style=2. Укажи Style=0.
Да и вообще я не понимаю, зачем ты используешь этот код. Замени на:
Код: Выделить всё
cboPosition.ListIndex = GetIndex(cboPosition, rs.Fields("AssignedPersonPositionID"))
будет гораздо правильнее
Lasciate ogni speranza, voi ch'entrate.

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 27.07.2003 (Вс) 12:27

Сорри, забыл пояснить. 2 таблицы Одна содержит данные на юзера , и ID характеристик. Характеристки определнны по этим ID в др. таблице. Теперь к примеру юзер нажимает Find и затем в комбо боксы(уже заранее заполненые при загрузке формы данными из таблицы с характеристиками) встают нужные значения по этому юзеру. Потом юзер конечно сможет их изменить при надобности.
Style combobox=2 и если честно не хотелось бы менять его т.к. иначе придется форму перекроить полностью, что не очень желательно.
Я попробовал ваш совет но нужные значения на встают при нажатии Find.
He is watching

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.07.2003 (Вс) 12:43

Когда Style=2 свойство Text изменять нельзя, оно только для чтения.
Задавай не .Text, а .ListIndex. И твою процедуру я бы советовал заменить на
Код: Выделить всё
Function GetIndex(ListControl As Object, ByVla ItemID As Long) As Long
Dim I As Long
For I = ListControl.ListCount-1 To 0 Step -1
  If ListControl.ItemData(I) = ItemID Then Exit For
Next I
GetIndex = I
End Function

и код cboPosition.ListIndex = GetIndex(cboPosition, rs!AssignedPersonPositionID) должен работать железно, если у тебя ComboBox загружается правильно
Lasciate ogni speranza, voi ch'entrate.

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 28.07.2003 (Пн) 12:47

Я вас наверное уже достал :), но блин не ставит он нужное значение. Я уже и по книге посмотрел - ListIndex должен работать. А все равно значение не ставит. Где же баг лежит. Функцию тоже по вашему совету переделал.
He is watching

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 28.07.2003 (Пн) 12:49

Combo box заполняется следующим образом при загрузке формы

Do Until rsPosition.EOF
cboPosition.AddItem (rsPosition.Fields("Position") & " ")
cboPosition.ItemData(cboPosition.NewIndex) = rsPosition.Fields("ID")
rsPosition.MoveNext
Loop
He is watching

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.07.2003 (Пн) 13:40

Загрузка правильная... Глюк какой-то.
Попробуй на этой строке (.ListIndex) поставить брэкпойнт и посмотри, чему равно выражение функции ListIndex. А затем посмотри, что загружено в ComboBox.
Да, и прогони в пошаговом режиме. Возможно у тебя где-то рекурсия стоит (например, в событии cboPosition_Click стоит что-то, что в конечном итоге еще раз изменяет значение ListIndex).
Lasciate ogni speranza, voi ch'entrate.

abbot
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 08.06.2002 (Сб) 10:45
Откуда: Uzbekistan

Сообщение abbot » 29.07.2003 (Вт) 8:44

Нашел ошибку наконец. У меня там проверка при зполнении стояла которая исключила необходимый вариант из комбо. :) Спасибо
He is watching


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 4

    TopList