Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как передать ссылку на форму / 11 сообщений из 11, страница 1 из 1
21.12.2005, 08:22
    #33448108
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Как передать ссылку на форму (NORMY) в :

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

Делаю универсальную функцию запуска форм:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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"
вылетает :(
Как это правильно сделать?
...
Рейтинг: 0 / 0
21.12.2005, 08:25
    #33448113
АлександрК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
А если имя формы взять в кавычки?

showform("NORMY")
...
Рейтинг: 0 / 0
21.12.2005, 08:40
    #33448131
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Смысл как раз в том и состоит, что передается имя формы, которую надо запустить, т.е. оно меняется.
...
Рейтинг: 0 / 0
21.12.2005, 08:50
    #33448147
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
А с кавычками вылетает OLE IDispatch, код 0.
...
Рейтинг: 0 / 0
21.12.2005, 08:52
    #33448150
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
w3d IF TYPE(_VFP.Forms(nameform)="U"

Для начала поставить еще одну закрывающую скобку. :)
...
Рейтинг: 0 / 0
21.12.2005, 09:21
    #33448193
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Увы, и со скобкой тоже вылетает :)
...
Рейтинг: 0 / 0
21.12.2005, 10:06
    #33448314
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Работает с такой конструкцией:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
FUNCTION showform
	LPARAMETERS nameform
	tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]
	IF &tt  
		DO FORM nameform+".scx"
	ELSE 
		_VFP.Forms(nameform).show
	ENDIF
ENDFUNC 

Но меня аж передергивает, как я на ЭТО гляну...
Нельзя ли как-то по-другому? :))
...
Рейтинг: 0 / 0
21.12.2005, 11:54
    #33448767
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Есть принципиальная разница в коде

Код: plaintext
1.
2.
IF TYPE("_VFP.Forms(nameform)")="U
...
и
Код: plaintext
1.
2.
3.
tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]
IF &tt 
...


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

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

NameForm = "NORMY"

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

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

Подчеркну еще раз: параметром коллекции _VFP.Forms выступает не имя файла SCX, а как раз-таки значение свойства Name формы.
...
Рейтинг: 0 / 0
21.12.2005, 13:10
    #33449087
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
ВладимирМЕсть принципиальная разница в коде
Код: plaintext
1.
tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]

В первом случае ты используешь СОДЕРЖИМОЕ переменной NameForm, а во втором ищешь форму со свойством Name = "NameForm".
Ну, т.е., если у тебя значение
NameForm = "NORMY"
то первый код и будет искать форму со свойством Name = "NORMY", а второй код будет искать форму со свойством Name = "NameForm"
Нет, подставляется именно ЗНАЧЕНИЕ.
И ищется именно та форма, имя которой я передаю при вызове - showform('NORMY'), например.
П.С. обратите внимание на количество кавычек - [, ", '. - из-за чего и ищу какое-нибудь другое решение (хотя не принципиально, конечно...).
П.П.С. Про разницу имени файла и имени формы я догадываюсь
...
Рейтинг: 0 / 0
21.12.2005, 14:04
    #33449309
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
Да, ошибся с кавычками...

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

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

Код: plaintext
1.
2.
nameform = "NORM"
?TYPE("_VFP.Forms(m.nameForm)")

Никаких проблем. Может, опять есть таблица с полем NameForm? Префикс "m." добавь перед именем переменной.
...
Рейтинг: 0 / 0
21.12.2005, 14:13
    #33449353
w3d
w3d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передать ссылку на форму
ВОТ!!!!!
СПАСИБО!!!
Я знал, что все должно быть гораздо проще!
Просто запутался с кавычками и стал громоздить ужасные конструкции...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как передать ссылку на форму / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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