Страница 1 из 2

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

Добавлено: 10 июн 2008, 14:32
galover
Как объявить глобальную переменную уровня проекта (без привязки к конкретному фейсу), чтобы была видимость из разных интерфейсов, с возможностью изменения значения этой переменной из этих фейсов. При этом переменную нужно еще предварительно инициализировать (в каком месте это сделать и как). Заранее спасибо!

Добавлено: 10 июн 2008, 17:29
RAJAH
Вот один из моих prj-файлов:

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

var
  MarkMK : longint;
#include C:\Forms\TPP\Marsh.vpp
#make 'C:\Forms\TPP\MarshCard.rtf'
#make 'C:\Forms\TPP\MarshOboz.vip'

Добавлено: 10 июн 2008, 17:51
galover
RAJAH
ну вопрос больше про глобальную инициализацию этой переменной. Я так понял функций отвязанных от фейса быть не может, значит скорей всего никак :(

Добавлено: 10 июн 2008, 18:20
edward_K
есть фейс, который вызывается при переходе из модуля в модуль. Не помню как он зовется , но если найдете можно смело закрывать своим. А вообще лучше создать свою настройку.

Добавлено: 10 июн 2008, 18:26
edward_K
SMH_GALNET кажись

Добавлено: 10 июн 2008, 20:52
m0p3e
Можно скрытую настройку создать (в зависимости от задачи системную или пользовательскую) и играть с ней как душе угодно.

Добавлено: 11 июн 2008, 11:43
galover
edward_Km0p3e
Не совсем понял можно по-подробней. Где прочитать про настройку?

Добавлено: 11 июн 2008, 12:27
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, 'нет');
}

Добавлено: 11 июн 2008, 16:06
galover
edward_K спасибо. Только вот объясните - куда вставить этот код? В файл проекта?

Добавлено: 11 июн 2008, 16:39
edward_K
ну зачем так сразу в проект. Можно как обычный vip сделать.
Один совет - настройки создавайте в отдельный рес и тщательно проверяйте, что сей рес подключен перед запуском галки.

Добавлено: 11 июн 2008, 17:00
galover
edward_K
блин сложно -> на одну глобальную переменную такой огород. Но на будущее учту, может пригодится :cool:

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

Заранее спасибо!

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

Добавлено: 19 июн 2008, 13:40
galover
edward_K
Спасибо!!! Но можно по шагам?

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

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

3)
самый простой - завязаться на exe. Помимо упомянутой могет пригодиться TranslatePath, например TranslatePath('%ClientRoot%') или TranslatePath('%StartPath%') - в 3 звенке это разные значения. По ctrl+F4 попробуйте
на exe завязываться не хочется. Придется еще дополнительно определять в какой среде работаем, а такого способа я пока не знаю, да и просто душа не лежит[/quote]

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