:: Visual Foxpro, Foxpro for DOS
DisplayValue в ComboBox
spammail_88
Автор

Сообщений: 108
Дата регистрации: 13.11.2010
Возможно кто-то сталкивался с таким и может объяснить мне почему, и в каких случаях оператор .DisplayValue=cVariable не срабатывает и значение комбобокса не меняется. (добавил скриншот дебаггера)
[attachment 28294 Debugger.gif]



Исправлено 2 раз(а). Последнее : spammail_88, 02.09.17 22:48
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Вообще-то DisplayValue не для изменения значения комбика ... для этого есть Value или там ListIndex
Ratings: 0 negative/1 positive
Re: DisplayValue в ComboBox
spammail_88
Автор

Сообщений: 108
Дата регистрации: 13.11.2010
Во первых ListIndex и Value также не меняются (см. предыдущий оператор).
Во вторых DisplayValue, все таки, для изменения (по крайне мере так пишет help):
Цитата:
DisplayValue Property
Specifies the contents of the first column of the selected item in a ListBox or ComboBox control. Available at design time and run time.
Use the DisplayValue property when a combo box or list box has more than one column, and the control's BoundColumn property is set to a value greater than 1.
[Form.]Control.DisplayValue[ = Expr]
Если нет, писало бы: Read-only at design time and run time.

Кроме того, ка Вы видите, я в цикле меняю наполнение и значения для нескольких комбо. С первым – все в порядке, все сработало, а на втором – нет. В чем разница, чем второй особенный, не могу понять.



Исправлено 4 раз(а). Последнее : spammail_88, 03.09.17 08:31
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Честно скажу - Ваш код вот совсем не очевиден )))
Циклы, подстановки ... нет - это ваше дело конечно, но на мой взгляд проще в фоксе для комбо сразу использовать источник данных а не заполнять его в коде (это св-ва RowSourceType, RowSource, BoundColumn, BoundTo).

И раз уже вы написали для комбо .Value=что-то то далее не вижу смыла смысла чего-то еще в DisplayValue пытаться прописать.

Далее, очистить комбо можно одной командой:
ваш_комбо.Clear()

и при добавлении вроде же индекс нуна указывать насколько помню:
ваш_комбо.AddItem([Значение], [индекс])

В очередной раз убеждаюсь - злоупотребление подстановками ведет к очередному геморою (это не в ваш адрес - это вообще)
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Вот вам простейший пример использования курсора в кач-ве источника данных
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Все свойства комбо влияющие на привязку/данные покажи. Если комбо базового класса, или если все комбо на форме одного класса, а "шутит" только один из них, то сравни все "изменённые" свойства между ними. Правда динамическое (в коде, тем более с макро) изменение свойств весьма непросто выявить...
Плюс содержимое массива aItems приведи (особенно его первый элемент - вдруг там не строка, или пустая строка или еще что "странное").

Вообще лучше всего пытаться "изолировать" проблему (постепенно убирая все прочие контролы и куски кода с формы, пока не станет работать правильно), или воспроизвести её на чистой форме (не всегда, увы, это получается сделать). Такой пример выложил бы, гораздо больше шанс понять что у тебя "не так".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
spammail_88
Автор

Сообщений: 108
Дата регистрации: 13.11.2010
Спасибо, AndyNigmatec за подсказку с ListIndex. Вроде разобрался. Суть кода в том, что появляются или исчезают некоторые пункты комбобокса, при этом порядок оставшихся остается прежним. То есть при изменении количества пунктов индекс всех следующих смещается.

Если индекс активного пункта изменился в следствии манипуляций, то обычного присваивания Value оказалось недостаточно. Я заметил, что Value комбо определено, а не экране пусто. По этому, пробовал еще и DisplayValue поменять, в следствии чего пропадало и Value.

Проблема, наверное, в том, что значение (Value) все то же, а его индекс (ListIndex) изменился, и здесь Фокс теряется. В тех комбо, где индекс активного пункта после манипуляций не меняется – все ОК.

После того, как я вручную задал и Value, и ListIndex, все стало работать корректно. И в DisplayValue уже нет необходимости.
Имел ли бы я такие проблемы, если б пункты добавлял и убирал не вручную, а через курсор – не знаю.



Исправлено 2 раз(а). Последнее : spammail_88, 04.09.17 14:18
Ratings: 0 negative/0 positive
Re: DisplayValue в ComboBox
spammail_88
Автор

Сообщений: 108
Дата регистрации: 13.11.2010
я



Исправлено 1 раз(а). Последнее : spammail_88, 04.09.17 14:18
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 akvvohinc Артём  (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика