powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Идентификатор в ComboBox
13 сообщений из 13, страница 1 из 1
Идентификатор в ComboBox
    #32688849
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Мой вопрос -продолжение темы ошибочно названной VFP и BDE Проблемма решена но возникают дополнительные вопросы
Задача такая. Есть таблица (справочник) состоит из нескольких полей- в том числе идентификатор (zkei) и наименование( nkei)
Мне нужно
1 поместить из таблицы поместить поля zkei и nkei в combo и закрыть таблицу
2 При раскрытии списка комбо пользователь должен видеть только наименования (значения nkei)
3 После того как пользователь выбрал какое либо наименование я должен проделать какие либо действия с соответствующим zkei
При помощи Марины ( MarinaVP) проблему решил следующим образом
В инит формы создал массив и заполнил им combo

Select zkei, nkei from kei where !EMPTY(zkei) into array TMP_ar
for i=1 to _TALLY
thisform.combo1.addlistitem(tmp_ar(i,2),VAL(tmp_ar(i,1)))
next

А затем выбранный идентификатор беру из Thisform.combo1.ListItemID
Как уже говорил все работает но возникли два вопроса на будующее:
1) addlistitem требует ТОЛЬКО ЦИСЛОВОЙ ТИП (у меня сейчас поле символьное но там только цифры поэтому все получилось), а как быть если там буквы и прочие знаки (как на MS SQL)
2)Как быть если в комбо нужно поместить 3 или более значений (но видеть только наименование)
Заранее благодарен
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32688875
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему нелья использовать в Combo три колонки и все данные в них симольные, в ColumnWidth ставить, к примеру, "200,0,0" и ColumnLines=.F., а идентификатор в любой колонке, которой надо, и поставить соотвественно BoundColumn=3 (к примеру). Дерзайте
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32688888
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй в качестве источника данных для Combo собственно массив.

http://www.sql.ru/forum/actualthread.aspx?tid=61985

Единственная проблема - это если в массив не попало ни одной записи. В этом случае надо принудительно создать один элемент массива и в первый видимый элемент добавить символ обратного слэша "\". Такой элемент будет недоступен для выбора.
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689273
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Пытался пытался и никак!!!
to MarinaVP
А каким способом остальные колонки пристоить?
если я пишу в цикле
thisform.combo1.addlistitem(tmp_ar(i,2),(tmp_ar(i,1)) - хочу чтобы значения zkei как они есть - символьные то программа требует нумериг
если
thisform.combo1.addlistitem(tmp_ar(i,2)) && ДОБАВЛЯЮ наимнование
thisform.combo1.addlistitem(tmp_ar(i,1),2) && добавляю zkei во второй столбец комво
То почемуто при раскрытии сомво среди наименований появляется одно значение идентификатора
и как потом взять идентификатор у выбранного наименования
во 2-м случае Thisform.combo1.ListItemID- уже выдает порядковый номер

to ВладимирМ
Хотелось бы обойтись без массивов чтобы было как можно меньше всяких переменных
Вообще тут можно сказать дело принципа. Один коллега кидает пальцы и кричит что в дельфи это все просто а в фоксе так не сделаешь
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689346
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with .ComboBox1
ColumnCount= 3 
COlumnLines=.F.
ColumnWidth="200,0,0"
BoundColumn= 3 

select .... from Table into array tmp
for i= 1  to _tally
.additem(tmp[i, 1 ],i)
.list(i, 2 )=tmp[i, 2 ]
.list(i, 3 )=tmp[i, 4 ]
.PICTURE(i)="IMAGES\"+Tran(i,'@L 999')+".BMP" && К приеру :)))
next
endwith
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689352
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nfpto ВладимирМ
Хотелось бы обойтись без массивов чтобы было как можно меньше всяких переменных
Извини, но ты по ссылке прочитал? Этот массив будет не переменной, а свойством формы. А это не одно и то же. В данном случае работать с массивом удобнее чем с прямым наполнением списка значений.

nfpВообще тут можно сказать дело принципа. Один коллега кидает пальцы и кричит что в дельфи это все просто а в фоксе так не сделаешь
Да пусть развлекается. Мало ли где какую фенечку удобнее сделать. Я так понимаю приложение пишется на FoxPro. Если коллега кидает пальцы, то попроси его написать собственно все приложение, а не наполнение отдельных объектов. Потом сравните у кого пальцы шире растопырятся
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689384
MarinaVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ВладимирМ

Соврешенно с вами согласная я
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689538
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Осмелюсь воспользоваться логином nfp (с разрешения его обладателя). Я как раз тот самый коллега :-) Николай Федорович (это мой друг и коллега) просто забыл в нужном месте ставить смайлики [:-))] Просто у нас идет рабочий спор и мы пытаемся найти оптимальный путь решения проблемы. Сам же программирую и на VFP и на Delphi (у меня примерно равное количество проектов). Просто у меня в Delphi как оказалось больше опыта чем в VFP, да честно говоря он мне и больше нравиться (это конечно субъективно). Так что без обид... и без смеха... это приложение (как и любое другое :-)) без проблем можно написать и на Delphi, но в силу ряда причин приходиться делать на VFP.

Спасибо... Александр.
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32689717
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр! Я вовсе не собирался и не собираюсь разворачивать дискуссию FoxPro vs Delphi. Для этого на данном сайте есть форум "Сравнение СУБД".

Но идти "на принцип" из-за частного решения в конкретной форме?! Без большого количества смайликов тут не обойтись
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32690091
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
nfp - настоящий
Прошу прощения у уважаемой публики за ссылку на коллегу. Возможно это было не к месту или нужно было иначе варазить свои мысли. Я слишком все преувеличил (насчет пальцев, принципов и прочее). Но если можно вернемся еще раз к интересующему вопросу
Попробовал я оба варианта сами комбо работают а как выцепить значение любой из колонок у выбранной записи пока не пойму С вариантом Марины кое что понял а с вариантом Владимира пока ни как- не вижу я всех значений ).
Если можно подскажите.

и еще to ВладимирМ
"Извини, но ты по ссылке прочитал? Этот массив будет не переменной, а свойством формы. А это не одно и то же. В данном случае работать с массивом удобнее чем с прямым наполнением списка значений."
Если можно объяснить
1 в чем разница просто массива и массива как свойства формы (во 2-м случае известно на всей форме и убирается по закрытию формы а не нужен public и дальнейшее удаление а что еще? )
2 Какие преимущества данного способа перед прямым заполнением списка значений (не нужно тратить время на заполнение, а что еще?)
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32690127
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nfpnfp - настоящий
Если можно объяснить
1 в чем разница просто массива и массива как свойства формы (во 2-м случае известно на всей форме и убирается по закрытию формы а не нужен public и дальнейшее удаление а что еще? )
Собственно и все. НО! Работа с PUBLIC переменными требует повышенной аккуратности от программиста. Я бы рекомендовал новичкам всячески избегать их использования. Особенно если речь идет о локальных задачах, как в данном случае.

Дело в том, что про такие переменные легко забыть и переопределить где-нибудь в другой форме или процедуре, а потом долго удивляться почему это код не работает.

nfp2 Какие преимущества данного способа перед прямым заполнением списка значений (не нужно тратить время на заполнение, а что еще?)
Зависит от того, для какой цели Вы будете использовать источик Combo в дальнейшем. В массивах проще производить модификацию и навигацию. Т.е. в общем случае потребуется меньше кода. Хотя, безусловно, все задачи можно решить и при явном заполнении выпадающего списка.
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32690142
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, если в качестве источника данных - массив, то установите для combo такие значения:

BoundTo=.F. - это значение по умолчанию - менять не надо
Value = 1

Если Value указано числовое значение и BoundTo=.F., то в качестве выбранного значения ComboBox будет указан номер строки массива!

Это значит, что после выбора в Combo обратится к нужному элементу массива можно будет так:

?ThisForm.aCombo(ThisForm.Combo1.Value,1)
...
Рейтинг: 0 / 0
Идентификатор в ComboBox
    #32691139
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Спасибо разобрался
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Идентификатор в ComboBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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