PutEventById

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

PutEventById

Сообщение hope »

Добрый день!

Пытаюсь сделать свою форму на vip-е.

При компиляции выдается ошибка: нет такой функции, метода или поля, или неверный контекст использования: fcc1.

Ругается на строчку:
frm36mkhp.PutEventById(feDoLoop, fcc1);

Пробовала менять название переменной с1 на другие - не помогает. В чем может быть проблема?

Вот кусочек кода:
RUNDIALOG(forma36_PAS,D1,D2);
RUNINTERFACE(getsklad,MyPodr);
RUNINTERFACE(getsomemc,-12345,-12346);

frm36mkhp.write(d1,0);
frm36mkhp.write(d2,0);
frm36mkhp.write(katpodr.name,0);

// цикл по МЦ
if (modifier getfirst pickname=tsok)
do
{
frm36mkhp.PutEventById(feDoLoop, fcc1);
frm36mkhp.write(katmcpick.name,0);
}
While (modifier getnext pickname=tsok)
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: PutEventById

Сообщение hope »

Может ругается на константу события feDoLoop?
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Re: PutEventById

Сообщение oiko »

в випе должно присутствовать в самом начале типа таких строк
const
#include myconst.inc
end;

а в файле myconst.inc
должна быть строка наподобие
fcc1=1234;
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: PutEventById

Сообщение hope »

Спасибо!

Переменную с1 я писала в интерфейсе как Word, но значения нигде не присваивала.

Все-равно необходимо fсс1 описывать как константу в include файле?
В include файле fcc1 можно задать произвольное значение? (просто у меня еще есть переменные циклов - им можно давать любое значение?)
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: PutEventById

Сообщение Goblin »

Не надо никаких include'ов ...
Просто перед компиляцией надо скопилировать прототип и все .Копилятор сам создаст и присвоит значения встречающимся константам из имеющихся свободных - для cm'ов кнопочных ведь не пишете ничего ? Вот и здесь не надо ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Re: PutEventById

Сообщение oiko »

Туманову О.В.:
Можно и так, но как я написал тоже работает.
Не люблю полагаться на компилятор.

to HOPE:
в випе эту константу описывать не нужно только в секции const.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: PutEventById

Сообщение hope »

Всем спасибо!
Обошлась вариантом Олега: откомпилила сначала форму, а затем интерфейс, в котором она заполняется.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: PutEventById

Сообщение ecasoft »

На диске после компиляции форм создается файл с расширением fnc. В нем лежат значения констант, которые подобрал компилятор форм. Но они еще и в ресурснике лежат с некоторой версии..поэтому действительно..вначале компилируется FRM, а затем VIP и думать о константах не надо. Чтобы не заморачиваться лучше писать проекты для сборки своих разработок и там описывать, что и в какой последовательности будет компилироваться.
Проекты удобны еще и тем, позволяют делать маке - т.е. перекомпилировать только измененные файлы, а не все.
Если некоторый интерфейс вызывает другой, то вызываемый лучше компилировать первым, чтобы проверялись параметры.
Некоммерческое общение в форуме
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: PutEventById

Сообщение Deinis »

А какие команды, кроме #MAKE там еще могут использоваться???

Банальный #include - это понятно.

Знаю, что прямо там можно описывать константы, которые будут понятны всем интерфейсам проекта.
CONST
MyCONST = 4 ;
...
END

Там же можно описывать таблицы в памяти, которые будут понятны всем интерфейсам в проекте:
Table struct ...

Интефейсы компилятся командой
#make "_полный_путь_до_файла_с_фейсом"
или
#make '_полный_путь_до_файла_с_фейсом'

либо можно и так (если запуск компилятора осуществляется из текущей папки с проектом)
#MAKE '*.vip'
#MAKE 'ProcessDoc\ProcessDoc.vip'
#MAKE '*.frm'

А какие еще команды есть?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: PutEventById

Сообщение Maverick »

Ну, можно делать
#DEFINE и #DECLARE, причем описанные макроопределения будут доступны во всех, описанных ниже интерфейсах и формах...

а вообще - читайте РТФМ )
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: PutEventById

Сообщение Deinis »

С #DEFINE и #DECLARE тоже знакомы :)

А как использовать переменные окружения?
В файле vip.cfg пишу:
/#MyPath=D:\VIP\WORK\DZ
В файле D:\VIP\WORK\DZ\ProcessDoc\ProcessDoc.vip пишу
#INCLUDE %MyPath%\ProcessDoc\SomeProcedures.vpp

Компилятор выдает ошибку:
Ошибка: Ошибка при при открытии include файла (стр.264, поз.48 в ProcessDoc\ProcessDoc.vip) #INCLUDE %MyPath%\ProcessDoc\SomeProcedures.vpp
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: PutEventById

Сообщение Maverick »

хм... ну у нас все батником запускаетмя ...
и все работает...
вот пример

BAT-файл

set ATLANTIS=E:\Atlantis\Atl711.2508
set iProject=.
set VipGals=%Atlantis%\Src
@echo ***!!!!!!!!!!***
%ATLANTIS%\EXE\vip.exe /c=%iProject%\vip.cfg %iProject%\make.prj
@echo ***done!***
==========

PRJ

#make '%iProject%\Other\Zar\*.rtf'
#make '%iProject%\Other\Zar\*.vip'

#make '%iProject%\Other\Kassa\*.frm'
#make '%iProject%\Other\Kassa\*.rtf'
#make '%iProject%\Other\Kassa\*.vip'

#make '%iProject%\KADR.APP\stafmain.mnu'// главное меню кадров
#make '%iProject%\KADR.APP\*.frm'
#make '%iProject%\KADR.APP\*.rtf'
#make '%iProject%\KADR.APP\*.slk'
#make '%iProject%\KADR.APP\*.vip'

в CFG
....
[Compilers]
Build=Off
ClearResource=Off
ErrorLevel=2
Full=Off
IncludesPath:=%iProject%;
/I=%atlantis%\EXE\
/I=%atlantis%\SOURCE\
Make=Off
OutputResourceName=%iProject%\debug.res
Run=Off
...

так что и PRJ и CFG понимают переменные
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Re: PutEventById

Сообщение Max_Fin »

В #INCLUDE не допускается использование переменнных окружения.

Обойти можно с помошью cfg в котором
[Compilers]
..
/I=%MyPath%\ProcessDoc\
..

В проекте соотвественно будет строка:
#INCLUDE SomeProcedures.vpp
Жду выхода Вселенная 2.12!
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: PutEventById

Сообщение hope »

А если я хочу еще использовать временную таблицу в памяти?
Как должен выглядеть мой проект? так правильно:

#include 4Tov_Obor.inc
#make "4Tov_Obor.frm"
#make "4Tov_Obor.vip"

Опять ругается на переменную цикла.
Что там за логика заложена? может где почитать можно?
Ответить