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

Откуда: Сургут
Сообщений: 681
Как передать ссылку на форму (NORMY) в :

IF TYPE("_VFP.Forms('NORMY')")="U" ?

Делаю универсальную функцию запуска форм:
FUNCTION showform
	LPARAMETERS nameform
	IF TYPE(_VFP.Forms(nameform)="U"  
  	DO FORM nameform+".scx"
ELSE 
_VFP.Forms(nameform).show
ENDIF
ENDFUNC 

вызываю ее showform(NORMY), так в строке
IF TYPE(_VFP.Forms(nameform)="U"
вылетает :(
Как это правильно сделать?
21 дек 05, 08:22    [2192614]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
АлександрК
Member

Откуда: Белгородская обл.
Сообщений: 121
А если имя формы взять в кавычки?

showform("NORMY")
21 дек 05, 08:25    [2192619]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
Смысл как раз в том и состоит, что передается имя формы, которую надо запустить, т.е. оно меняется.
21 дек 05, 08:40    [2192639]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
А с кавычками вылетает OLE IDispatch, код 0.
21 дек 05, 08:50    [2192658]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
проходящий
Guest
w3d
IF TYPE(_VFP.Forms(nameform)="U"


Для начала поставить еще одну закрывающую скобку. :)
21 дек 05, 08:52    [2192662]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
Увы, и со скобкой тоже вылетает :)
21 дек 05, 09:21    [2192720]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
Работает с такой конструкцией:
FUNCTION showform
	LPARAMETERS nameform
	tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]
	IF &tt  
		DO FORM nameform+".scx"
	ELSE 
		_VFP.Forms(nameform).show
	ENDIF
ENDFUNC 

Но меня аж передергивает, как я на ЭТО гляну...
Нельзя ли как-то по-другому? :))
21 дек 05, 10:06    [2192908]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Есть принципиальная разница в коде

IF TYPE("_VFP.Forms(nameform)")="U
...
и
tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]
IF &tt 
...


В первом случае ты используешь СОДЕРЖИМОЕ переменной NameForm, а во втором ищешь форму со свойством Name = "NameForm".

Ну, т.е., если у тебя значение

NameForm = "NORMY"

то первый код и будет искать форму со свойством Name = "NORMY", а второй код будет искать форму со свойством Name = "NameForm"

Видимо, ты путаешь имя ФАЙЛА SCX и значение свойства Name формы. Это две большие разницы.

Подчеркну еще раз: параметром коллекции _VFP.Forms выступает не имя файла SCX, а как раз-таки значение свойства Name формы.
21 дек 05, 11:54    [2193600]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
ВладимирМ
Есть принципиальная разница в коде
tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]

В первом случае ты используешь СОДЕРЖИМОЕ переменной NameForm, а во втором ищешь форму со свойством Name = "NameForm".
Ну, т.е., если у тебя значение
NameForm = "NORMY"
то первый код и будет искать форму со свойством Name = "NORMY", а второй код будет искать форму со свойством Name = "NameForm"

Нет, подставляется именно ЗНАЧЕНИЕ.
И ищется именно та форма, имя которой я передаю при вызове - showform('NORMY'), например.
П.С. обратите внимание на количество кавычек - [, ", '. - из-за чего и ищу какое-нибудь другое решение (хотя не принципиально, конечно...).
П.П.С. Про разницу имени файла и имени формы я догадываюсь
21 дек 05, 13:10    [2194083]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Да, ошибся с кавычками...

Но тогда не понятен смысл вопроса. Для коллекции _VFP.Forms() нужно значение свойства Name искомой формы. Ну, и в чем проблема передать это значение?

У меня нормально работает конструкция вида

nameform = "NORM"
?TYPE("_VFP.Forms(m.nameForm)")

Никаких проблем. Может, опять есть таблица с полем NameForm? Префикс "m." добавь перед именем переменной.
21 дек 05, 14:04    [2194408]     Ответить | Цитировать Сообщить модератору
 Re: Как передать ссылку на форму  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
ВОТ!!!!!
СПАСИБО!!!
Я знал, что все должно быть гораздо проще!
Просто запутался с кавычками и стал громоздить ужасные конструкции...
21 дек 05, 14:13    [2194484]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить