Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Отображение имен полей таблицы  [new]
RIGOR
Member

Откуда:
Сообщений: 89
Добрый день. Есть форма для поиска. Через COMBOBOX происходит выбор поля для поиска, там отображаются имена полей таблицы, далее происходит выбор условий поиска и значение с чем сравнивать. Подскажите, как в COMBOBOX отображать не имена полей на английском языку, а подписи к ним на русском
24 авг 06, 12:46    [3047770]     Ответить | Цитировать Сообщить модератору
 Re: Отображение имен полей таблицы  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Автоматического способа (сделать настройку) - нет. Но можно сформировать этот список вручную. Собственно значение Caption поля таблицы можно получить так.

?DBGetProp("MyTable.MyField","FIELD","Caption")

Кстати, таблицу даже не обязательно открывать. Достаточно, чтобы была открыта база данных, в которой эта таблица находится.

Начиная с версии VFP8 это можно сделать еще так

?FIELD(1,"MyTable",1)

Но здесь таблица уже должна быть обязательно открыта.

Далее все просто. В качестве источника данных для ComboBox используешь двумерный массив. Первый столбец - Caption, второй собственно имя поля.

Примерно так

В этом случае Вам необходимо предварительно создать свойство формы типа "массив". Признаком того, что новое свойство это именно массив является указание его размерности, например:

ThisForm.AddProperty("aCombo[1,1]")

Метод AddProperty() появился только в 6 версии FoxPro. В младших версиях вам придется создать это свойство вручную на этапе проектирования формы

Теперь где-то в событии Init-формы следует наполнить этот массив

LOCAL lnI, lnCount, lcFieldName
select MyTab
lnCount = FCOUNT("MyTab")
DIMENSION ThisForm.aCombo(m.lnCount,2)
FOR m.lnI=1 TO m.lnCount
	lcFieldName = FEILD(m.lnI)
	ThisForm.aCombo[m.lnI,1] = DBGetProp("MyTable."+m.lcFieldName,"FIELD","Caption")
	ThisForm.aCombo[m.lnI,2] = m.lcFieldName
ENDFOR

И сделайте следующие настройки в ComboBox

ComboBox.RowSource='ThisForm.aCombo'  
ComboBox.RowSourceType=5 - Array
24 авг 06, 13:27    [3048061]     Ответить | Цитировать Сообщить модератору
 Re: Отображение имен полей таблицы  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Да, забыл добавить настройку

ComboBox.BoundColumn = 2
24 авг 06, 13:49    [3048234]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить