Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 enabled  [new]
sasha123
Guest
Pomaqite pojalusta! takoy vopros: v tablitse 2 polya.

kod nazv_label
1 label1
1 label2
0 label3
0 label4
1 label5
0 label6
1 label7

label1....label7 nazvaniya labela nad form1.
nado cdelat tak chto, kajdiy raz koqda proqramma nachinaet rabotat
proveryala eto tablitsu,qde kod=1 dlya etoqo labela enabled=true
yesli kod=0 dlya etoqo labela enabled=false

kak eto cdelat?
29 сен 04, 16:40    [997191]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Делай проверку в INIT-формы.

LOCAL lcLableName
select MyTab
SCAN
	lcLableName = MyTab.nazv_label
	IF TYPE("ThisForm."+m.lcLableName)="O"
		ThisForm.&lcLableName..enabled=(MyTab.kod=1)
	ENDIF
ENDSCAN

Здесь 2 точки подряд - это не опечатка. После символа макроподстановки так и надо писать.
29 сен 04, 16:51    [997256]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
Вопрос в продолжение топика:
у меня имя таблицы хранится в свойстве формы thisform.mytable
каким образом мне работать с полями этой таблицы?
вот так не получается:
&thisform.mytable..FldName
можно конечно делать и так:
Local lcFld
lcFld = thisform.mytable+'.FldName'
и далее работать с &lcFld,
но хочется чего-нибудь изящного, как, например, выше было описано....
возможно ли это?
30 сен 04, 06:27    [998335]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
SergeyPl
Member

Откуда: Харьков
Сообщений: 287
Philin

но хочется чего-нибудь изящного, как, например, выше было описано....
возможно ли это?

Изящное :)
Local lcFld
lcFld = GetTableField(thisform.mytable,FldName)
...
...
endproc

function GetTableField
    lparameters strTableName,strFieldName
    return EVALUATE(strTableName+"."+strFieldName)
endfunc
30 сен 04, 09:10    [998502]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Со свойствами формы по другому не получится Только предварительная запись в переменную памяти и макроподстановка к этой переменной.

Впрочем, если использовать в качестве макроподстановки функцию EVALUATE() или регулярные выражения, то, при определенных условиях, можно

* Чтение значения поля таблицы
FieldValue = EVALUATE(ThisForm.MyTable+".FieldName")

* Выборка данных из таблицы
SELECT * FROM (ThisForm.MyTable)

Однако такие заменители макроподстановки далеко не универсальные. Т.е. сработают не во всех командах. Например, поменять местами варианты макроподстановок в приведенных примерах - не получится.
30 сен 04, 09:19    [998526]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
я бы использовал алиасы можно для каждой формы свои
и не забивал бы себе голову проблемами с макроподстановками
30 сен 04, 09:20    [998531]     Ответить | Цитировать Сообщить модератору
 Re: enabled  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

2 leaf

Очевидно в этом свойстве и хранится алиас - и он как раз и есть "для каждой
формы свой"

Posted via ActualForum NNTP Server 1.0

1 окт 04, 01:20    [1000842]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить