powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как передать ссылку на форму
11 сообщений из 11, страница 1 из 1
Как передать ссылку на форму
    #33448108
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
Как передать ссылку на форму
    #33448113
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если имя формы взять в кавычки?

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

Для начала поставить еще одну закрывающую скобку. :)
...
Рейтинг: 0 / 0
Как передать ссылку на форму
    #33448193
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, и со скобкой тоже вылетает :)
...
Рейтинг: 0 / 0
Как передать ссылку на форму
    #33448314
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
Как передать ссылку на форму
    #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
Как передать ссылку на форму
    #33449087
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЕсть принципиальная разница в коде
Код: plaintext
1.
tt=[TYPE("_VFP.Forms(']+nameform+[')")="U"]

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

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

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

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

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


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