Страница 1 из 2
					
				Докомпиляция интерфейса
				Добавлено: 01 июл 2011, 18:00
				 Masygreen
				Итак вот и я залез в эту ... 
Вообщем Сбыт-Акты на услуги надо добавить кнопку или контекстное меню ..
с меню вроде лучше т.к. не надо ни какого наследования и если форма поменяется то пофиг...
Не работает, собирается без ошибок, но не работает .. где накосячил ? 
Код: Выделить всё
#component 'L_SOPRDOC'
const cmCreateTXO = 990099; End;
alter interface AKTUSL; 
overload   end;
var menuID_ni:longint;
HandleEvent
cmHotKeys:{
inherited::handleEvent(cmHotKeys);
menuId_ni := LoadMenu('mnuSoprUslKatSopr');
AddMenuItem(menuId_ni,'****Создать ДО с ТХО****',cmCreateTXO);
PutHotCommand(RunLoadMenu(menuId_ni));}
cmCreateTXO:{  message('hi');}end;end.
Коротко: загружаю меню стандратное, добавляю свой пункт .. перегружаю cmHotKeys...
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 01 июл 2011, 18:14
				 galover
				скорей всего нужно закомментить inherited::handleEvent(cmHotKeys);
и если не прокатит, то попробовать заменить PutHotCommand на PutCommand.
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 01 июл 2011, 18:36
				 Masygreen
				как оказалось в cmHotKeys:{ вообще не попадает программа
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 01 июл 2011, 18:52
				 galover
				так там же в окне вызывается меню, значит нужно
Код: Выделить всё
alter interface AktUsl;
  window EditSopr;
    handleEvent
        cmHotKeys:{}
    end;
  end;
end.
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 03 июл 2011, 17:47
				 spark
				galover писал(а):так там же в окне вызывается меню, значит нужно
Код: Выделить всё
alter interface AktUsl;
  window EditSopr;
    handleEvent
        cmHotKeys:{}
    end;
  end;
end.
 
У меня вот так получилось:
Код: Выделить всё
#component 'L_SOPRDOC'
const cmCreateTXO = 990099; End;
alter interface AKTUSL;
overload   end;
var menuID_ni:longint;
window EditSopr;
HandleEvent
cmHotKeys:
{
 //inherited::handleEvent(cmHotKeys);
 menuId_ni := LoadMenu('mnuSoprUslKatSopr');
 AddMenuItem(menuId_ni,'****Создать ДО с ТХО****',cmCreateTXO);
 PutHotCommand(RunLoadMenu(menuId_ni));
}
cmCreateTXO:
{
  message('hi');
}
end;
end;
end.
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 04 июл 2011, 18:31
				 Masygreen
				и правда помогло 

 спасибо!
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 31 май 2012, 13:43
				 sildae
				Подскажите пожалуйста, если нужно докомпилировать меню накладной на сбыт, то какие значения нужно поставить? 
L_SOPRDOC изучила, разные варианты mnu... попробовала, но не получается и где взять  = 990099  значение константы.
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 15 авг 2012, 18:33
				 Ruslan_V
				Подскажите, пожалуйста, никода еще не сталкивался с докомпиляцией. Хочется понять, что необходимо для ее выполнения, с чего начать. Задача заключается в следующем: необходимо для ДО на закупку при изменении статуса тестировать наличие МЦ из спецификации на складах предприятия и запрещать изменение статуса в каком-то случае. В vipprogr.chm прочитал, что можно перегружать и расширять обработчики событий.  Я так понял, что для докомпиляции необходимо иметь исходный текст интерфейса ДО на закупку. Или я ошибаюсь? Галактика 7.12, SQL. Версия Atlantis 3.03.22.
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 15 авг 2012, 19:38
				 Den
				2 Ruslan_V
Раз Вы с докой знакомились, то внизу приписка есть 
"Докомпиляция интерфейсов поддерживается начиная с Атлантиса 5.0."  (
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 16 авг 2012, 11:15
				 Ruslan_V
				Да, не доглядел, глянул только на последнюю строку, где описано, что расширение потоков данных введено начиная с Атлантис 5.1.2x. Жаль (
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 21 авг 2012, 15:59
				 Sheinina
				Пришлось мне тут докомпилировать интерфейс - нужно было добавить дополнительный фильтр для отчета. Расширила обработчик события cmInit и вроде как все хорошо, но после того, как формируется отчет, на экране остается пустое поле интерфейса (как если в невизуальном интерфейсе в конце обработчика cmInit не поставить abort). Подскажите, пожалуйста, что делать, как победить эту заразу? Интерфейс L_SF::JOURNGETSETSF. 
Вот код:
Код: Выделить всё
#component 'L_SF'
alter interface JOURNGETSETSF; 
var crec, cnaz: comp;
create view lbs as select * 
from synonym schfact schfact_1, basedoc, katnazna
where ((
    crec == schfact_1.nrec
and schfact_1.cbasedoc == basedoc.nrec
and basedoc.cnazna == katnazna.nrec
))
;
overload 
DataStream DTS;
end;
DataStream DTS 
(
[Fil_naz] cnaz;
Table inherited::FRSETSCHFACT 
(
[SetNaz] lbs.katnazna.nrec;
);
Table inherited::FRGETSCHFACT 
(
[GetNaz] lbs.katnazna.nrec;
);
)
Handleevent table FRSETSCHFACT
cmOnProcess: {
   crec:=FRSETSCHFACT.cschf;
   if lbs.getfirst schfact_1 = tsOK then 
      if lbs.getfirst basedoc = tsOK then
         if lbs.getfirst katnazna = tsOK then {}
}
end;
Handleevent table FRGETSCHFACT
cmOnProcess: {
   crec:=FRGETSCHFACT.cschf;
   if lbs.getfirst schfact_1 = tsOK then 
      if lbs.getfirst basedoc = tsOK then
         if lbs.getfirst katnazna = tsOK then {}
}
end;
end; // DataStream
Handleevent
cmInit:{
  RunInterface('L_Katnazna::GetNazna',cnaz);
  inherited::Handleevent(cmInit);
}
end;
end.
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 21 авг 2012, 16:41
				 edward_K
				ну раз вы берете на себя обработку каких то функций дорабатывайте до конца.
В данном случае
Код: Выделить всё
if inherited::Handleevent(cmInit)=heAbort
{ abort
}
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 21 авг 2012, 18:10
				 Sheinina
				Спасибо 

На самом деле сама должна была догадаться, получив в запросе на текущее имя поля
Код: Выделить всё
'L_SF::JOURNGETSETSF.WSETPERIOD.SCRFILTPER.PD1'
,
что прорисовка окна производится не обработчике cmInit интерфейса, а несколько глубже.
 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 18 фев 2013, 08:26
				 Алексей
				докомпилирую интерфейс, рисую кнопку, вешаю событие.  все хорошо.
появляется слабовидящий пользователь и устанавливает себе значение в конфиг windows.fontsize=12 и при запуске галактики все мои явно выставленные значения по X Y позиционированию автоматом не умножаются...
если делать изменения ЦРФом - это как то учитывается, а как быть с добавленными программно элементами интьерфейсов ?
кто как решает данную проблему?
			 
			
					
				Re: Докомпиляция интерфейса
				Добавлено: 18 фев 2013, 09:42
				 edward_K
				я инклюдои подключаю следующий файл
Код: Выделить всё
// нужен для определения коэфицента при изменении шрифта
  var wkoef , wkoefx :double ;
  var wfont :string ;
  wkoef:=1 ;
  wfont:=GetStringParameter('Windows','FontSize',0)
  case wfont of
  '9' : { wkoef:=1.05 ;wkoefx:=1.14 ;}
  '10': { wkoef:=1.10 ;wkoefx:=1.25 ;}
  '8' : { wkoef:=1.00 ;wkoefx:=1.00 ;}
  else 
  { wkoef:=double(wfont)+0.0
    wkoef:=sqrt(wkoef/8.0) ;
    wkoefx:=wkoef/8.0
  }
  end ;
  // пока сделаем так
  // wkoef:=1;
  // wkoefx:=1;
если определите коэффициенты точнее поделитесь.
Но выяснилась еще проблема - если системный шрифт в винде стоит не стандартный (средний или крупный или процентом) то этого не хватает
Если найдете функцию как это определить, поделитесь.