On-line: PSP, Haz, гостей 4. Всего: 6 [подробнее..]
АвторСообщение



Пост N: 101
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 02.03.22 21:37. Заголовок: Combobox


в ComboBox при использовании с базой данных

ItemSource <Список> и ValueSource <Коды> при выборе из <Списка> корректно дает соответствующие <Коды>

вопрос: как при указанном <Коде> указать элемент в <Списке>,
(использование .Value:=<n> - это порядковый номер <Списка>, а .ValueSorce:=<n> отсутствует)

Пример:

БД (test.dbf)

Код Наименование
Code Name
------ -------
3 Иванов
15 Петров
2209 Сидоров

если применить

@ ...combobox...
ItemSource test->Name
ValueSource test->Code
...
Появится список:

Иванов
Петров
Сидоров

И если выбрать в списке <Сидоров>, то результат KODE:=.combobox.value даст KODE = 2209 (правильно)
а если уже наоборот присвоить к .combobox.value := 2209, то <Список> уже пустой, а должен был быть <Сидоров>
конечно понимаю Value присваивается порядковый номер элемента, а так как элементов в списке только 3...
Но тогда, может быть ввести ValueSource ?

Конечно, если в поле Code будут последовательные коды 1,2,3...n тогда работает, но не практично сами понимаете

В итоге приходится либо обходить, либо свой элемент создавать.

И как было задумано, может где-то что-то пропускаю ?

*также заметил если при присваивании Value значение больше элементов в списке, то список не обновляется,
а остается предыдущий выбранный элемент, логичней будет наверно если значение больше чем элементов в списке
то присваивать 0 (ноль) ? а то приходится, писать такой прикол
...
Windows.ComboBox.Value := 0
а потом уже только присваивать значение
Windows.ComboBox.Value := <n>
и если <n> превысить кол-во в списке, то в списке будет пустой элемент

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


постоянный участник




Пост N: 7228
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.22 00:37. Заголовок: Новичок пишет: такж..


Новичок пишет:

 цитата:
также заметил если при присваивании Value значение больше элементов в списке, то список не обновляется,
а остается предыдущий выбранный элемент, логичней будет наверно если значение больше чем элементов в списке
то присваивать 0 (ноль) ? а то приходится, писать такой прикол


Пиши маленький самодостаточный пример. Без него не понять что хочешь получить !
Смотри примеры по ComboBox - там всё есть.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1835
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.03.22 11:36. Заголовок: Новичок пишет: если..


Новичок пишет:

 цитата:
если уже наоборот присвоить к .combobox.value := 2209,


Value в комбике , это recno() , так исторически сложилось и оставлено для совместимости. Если нужно позиционировать по определенному valuesource, то сначала получаем номер записи по этому значению, а потом позиционируем.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4089
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.03.22 18:17. Заголовок: Haz пишет Value в ко..


Haz пишет
 цитата:
Value в комбике , это recno()


Не совсем так, если ставить Filter, Scope на dbf ...
Это порядковый номер в списке элементов combobox.

Пример варианта работы с combobox Скрытый текст

Добавил в пример еще варианты доступа к данным из :Cargo в combobox


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1836
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.03.22 18:42. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это порядковый номер в списке

да, согласен.
Почему то засел в голове номер записи. Когда то использовал этот контрол с базой. Отказался лет пять назад т.к. функционал слишком не устроил. С коротким выбором по массиву из значений типа ( да, нет, не знаю) работать можно. С базой работаю через свой аналог на tsb

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4090
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.03.22 18:59. Заголовок: Haz пишет С базой р..


Haz пишет
 цитата:
С базой работаю через свой аналог на tsb


Аналогично, можно еще добавить колонки и поиски с переключением тэга, т.е. не отличается схема работы от др. таблиц.

 цитата:
С коротким выбором по массиву из значений типа ( да, нет, не знаю) работать можно.


Но надо ставить NOTABSTOP, иначе можно легко сменить значение в combobox стрелками вверх\вниз, не заметив этого

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 363
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет