Глобальная переменная

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

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

galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Глобальная переменная

Сообщение galover »

Как объявить глобальную переменную уровня проекта (без привязки к конкретному фейсу), чтобы была видимость из разных интерфейсов, с возможностью изменения значения этой переменной из этих фейсов. При этом переменную нужно еще предварительно инициализировать (в каком месте это сделать и как). Заранее спасибо!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Вот один из моих prj-файлов:

Код: Выделить всё

var
  MarkMK : longint;
#include C:\Forms\TPP\Marsh.vpp
#make 'C:\Forms\TPP\MarshCard.rtf'
#make 'C:\Forms\TPP\MarshOboz.vip'
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

RAJAH
ну вопрос больше про глобальную инициализацию этой переменной. Я так понял функций отвязанных от фейса быть не может, значит скорей всего никак :(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

есть фейс, который вызывается при переходе из модуля в модуль. Не помню как он зовется , но если найдете можно смело закрывать своим. А вообще лучше создать свою настройку.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

SMH_GALNET кажись
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Можно скрытую настройку создать (в зависимости от задачи системную или пользовательскую) и играть с ней как душе угодно.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_Km0p3e
Не совсем понял можно по-подробней. Где прочитать про настройку?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

например так

#include CreateTune.vih
#ifdef ComponentVersion
#component "F_USERREPORT"
#end
Handler with replace M_TranspTest_DateModifyTune on ExtensionPoint
epDateModifyTuneEx (TS : ObjStartCreateTuneEx)
Action
{
TS.SetLastDateModTuneComp('#__COMPONENT__', 29, 03, 2008);
Result := true;
}
Handler with replace M_TranspTest_CreateTune on extensionPoint
epCreateTuneComponent (TR: ObjCreateTune) [220]
Action
{
Result := true;
TR.SetComponent('#__COMPONENT__');
TR.SetNextNumberTune(30000); //
TR.SetParent('RARS_TRANSP')
TR.AddTuneU('RARS_TRANSP.FILTR_PODR','наименование', ftList, '0', '', 'AvtoNastroikaPravaDostupa');
TR.AddList(0, 'да');
TR.AddList(1, 'нет');
}
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K спасибо. Только вот объясните - куда вставить этот код? В файл проекта?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

ну зачем так сразу в проект. Можно как обычный vip сделать.
Один совет - настройки создавайте в отдельный рес и тщательно проверяйте, что сей рес подключен перед запуском галки.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
блин сложно -> на одну глобальную переменную такой огород. Но на будущее учту, может пригодится :cool:
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Всем привет! Столкнулся таки с настройками. Сейчас мне нужна настройка, в которой я буду хранить путь к файлам -> шаблонам отчетов. Соответственно эту настройку нужно уметь читать из разных фейсов. Вопросы:
1) есть ли стандартный способ задания такой настройки -> скажем чтобы я через Галактику мог просматривать и соотвественно править эту настройку, то что привел edward_K насколько я понимаю - программное создание, хотелось бы средствами самой Галки
2) как программно быстрей и легче всего вытянуть значение настройки в своем фейсе -> я так понимаю как-то ч/з GetStringParameter, если можно пример кода

Заранее спасибо!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

если сделать как я писал, то настройку потом можно задавать из обычных настроек. Для пути только надо указать ftstring ну и AddList не нужно.
2 путь - задать путь где либо в неиспользуемых настройках из конфигуратор-параметры( ну или напрмер на пат отчеты и там сделать подпапку). Свою там создать нельзя. 3 - самый простой - завязаться на exe. Помимо упомянутой могет пригодиться TranslatePath, например TranslatePath('%ClientRoot%') или TranslatePath('%StartPath%') - в 3 звенке это разные значения. По ctrl+F4 попробуйте.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
Спасибо!!! Но можно по шагам?

1)
если сделать как я писал, то настройку потом можно задавать из обычных настроек. Для пути только надо указать ftstring ну и AddList не нужно.
т.е. мне нужно прогнать предложенный вами код один раз и настройка появится в настройках пользователя? А как ее там найти, по какому пути?
не слетит ли настройка с патчами? будет ли она системной, т.е. доступной всем юзерам?

2)
путь - задать путь где либо в неиспользуемых настройках из конфигуратор-параметры( ну или напрмер на пат отчеты и там сделать подпапку). Свою там создать нельзя.
как вычитать этот параметр потом? Ну и настройка ведь будет для меня, а как ее на всех юзеров распространить? Про пат отчеты вообще не понял, вы пишите -> создать подпапку и в то же время свою создать нельзя... Какой параметр отвечает за пат? Как мне его потом получить программно?

3)
самый простой - завязаться на exe. Помимо упомянутой могет пригодиться TranslatePath, например TranslatePath('%ClientRoot%') или TranslatePath('%StartPath%') - в 3 звенке это разные значения. По ctrl+F4 попробуйте
на exe завязываться не хочется. Придется еще дополнительно определять в какой среде работаем, а такого способа я пока не знаю, да и просто душа не лежит[/quote]
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1. он исполниться в автомате при старте галки под админом или при проверке реестра настроек. Найдете там где пропишите - пример приведен для автотранспорта - TR.SetParent('RARS_TRANSP')
2. там смотреть, а вносить правки в startup.cfg, как вычитать вы уже сами написали :). getStringParameter('Files','OutputFilesDirectory',0)
3. завяжитесь на pat. Зато в этом случае вы будете уверены, что шаблон из этого exe совместим с подключенным ресом.
Ответить