Alter interface

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

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

Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Alter interface

Сообщение Руслан »

Делаю alter interface на карточку сотрудника в модуле Управление персоналом=>Картотека сотрудников. Хочу добавить кнопку, которая будет вызывать интерфейс с определенными полями (этот интерфейс свой). Вот интерфейс, который хочу поменять - 'Z_STAFF::RECEPTIONMAIN.WINCOMMONDATA.WINDOW01.Z_STAFF::RECWIN01.SCRPERS1.PERSONS.DISDATE', он вложенный.
Вот код:

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

#component "Z_STAFF"
alter interface RECWIN01;
var butMy_var, labelMy_var, butMy_varSee : longint;
!window WINCOMMONDATA;
handleEvent
			cmInit :
			{
				inherited::handleEvent(cmInit);
				var i : integer;
				for (i := 0; i < 2; i++)
							{
					cfsSetCurrentContainer('RECWIN01&1.SCRBUTTONS');
					cfsCreateObject('button', 'SCRBUTTONS', 'ButDistributionValue', FALSE, butMy_var);
					cfsCreateObject('label', 'SCRBUTTONS', 'LableDistributionValue', FALSE, labelMy_var);
					cfsCreateObject('button', 'SCRBUTTONS', 'ButDistributionSeeValue', FALSE, butMy_varSee);
				    cfsSetProp('ButDistributionValue','Visible',TRUE);
					cfsSetProp('LableDistributionValue','Visible',false);
					cfsSetProp('ButDistributionSeeValue','Visible',true);
					cfsSetProp('ButDistributionValue','Size_X',91);
					cfsSetProp('ButDistributionValue','Size_Y',25);
					cfsSetProp('ButDistributionValue','Origin_X', 10);
					cfsSetProp('ButDistributionValue','Origin_Y', 323);

					cfsSetProp('LableDistributionValue','Size_X',91);
					cfsSetProp('LableDistributionValue','Size_Y',25);
					cfsSetProp('LableDistributionValue','Origin_X', 10);
					cfsSetProp('LableDistributionValue','Origin_Y', 323);

					cfsSetProp('ButDistributionSeeValue','Size_X',91);
					cfsSetProp('ButDistributionSeeValue','Size_Y',25);
					cfsSetProp('ButDistributionSeeValue','Origin_X', 10);
					cfsSetProp('ButDistributionSeeValue','Origin_Y', 323);

!					cfsSetProp('ButDistributionValue','Command', cmButDistributionValue);
!					cfsSetProp('ButDistributionSeeValue','Command', cmButDistributionSeeValue);
					cfsSetProp('ButDistributionSeeValue','Title','Размеры');
							}
			}
end;
end.
Кнопка не прорисовывается, когда просматриваю этот интерфейс через запуск внешних интерфейсов, то все вижу. Нужно как-то передавать события через главный интерфейс или как?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Alter interface

Сообщение edward_K »

ну он вызывается не через запуск, а как объект. В этом случае надо перехватывать cmOnVipLoad (который вроде не срабатывает при обычном вызове - вот и проверьте заодно).
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Alter interface

Сообщение Руслан »

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

Re: Alter interface

Сообщение edward_K »

ну дык я ж вам написал - замените cmInit на cmOnVipLoad
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Alter interface

Сообщение Руслан »

Ага, спасибо, в понедельник попробую
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Alter interface

Сообщение Руслан »

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

Re: Alter interface

Сообщение m0p3e »

Обязана появится.
Смотрите что возвращают функции конфигуратора.

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

#component "Z_Staff"

Alter Interface RecWin06 ( Fix '');
HandleEvent
cmOnVipLoad :
 {
  If Pr_CurUserAdmin //Добавим столбец с nrec-ом
    {
     inherited::HandleEvent(cmOnVipLoad);
     var iObj : LongInt;
     cfsCreateObject ( 'COLUMN', 'BRWAPPOINTMENTS1', 'APPOINTMENTS.NREC', false, iObj );
     cfsSetProp ( iObj, cfpTitle, 'Appointments.Nrec' );
     cfsSetProp ( iObj, cfpProtect, true );
    };
 }; //cmOnVipLoad
END.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Alter interface

Сообщение edward_K »

наверное дело в cfsSetCurrentContainer('RECWIN01&1.SCRBUTTONS'); - уберите его совсем
да и зачем for непонятно - чтобы наверняка добить? Его тоже в топку. Внимательно проверьте имя экрана.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Alter interface

Сообщение n0where »

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

  if (cfsSetCurrentContainer('M_QUALITY::KATQP')<>0) {
    message('cfsSetCurrentContainer');
    exit;
  }

  if (cfsCreateObject ('button','SCEDITQPHEAD','butSP',FALSE,Button1)<>0) {
    message('cfsCreateObject');
    exit;
  }

cfsSetProp('butSP','Origin_X',420);
cfsSetProp('butSP','Origin_Y',22);
cfsSetProp('butSP','Size_X',91);
cfsSetProp('butSP','Size_Y',25);
cfsSetProp('butSP','Title','ÅÑτáΓ∞');

cfsSetProp('butSP',cfpCommand,cmButSP);
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Alter interface

Сообщение Den »

cfsSetCurrentContainer('RECWIN01&1.SCRBUTTONS');

насколько я помню контейнером в Атлантисе не может выступать окно,скрин и другой визуальный формат....они тоже все в контейнере inteface_name. Т.к. что в Вашем случае там нужно RECWIN01
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Alter interface

Сообщение savov »

Я хочу сделать аналогичное: добавить кнопку в интерфейс L_PRNSOPR::PRNVARIATMCUSL.SCRPRNVARIATMCUSL.WNASTR, чтобы нажав на нее можно было выбрать и заполнить сразу вариант наименования у всех МЦ.
Код

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

 #component 'L_PRNSOPR'
    const cmChangeState = 990099; End;

    alter interface PRNVARIATMCUSL;
    overload   end;
    var ButMyCom:longint;
!    window SCRPRNVARIATMCUSL;

    HandleEvent
    cmOnVipLoad:
    {
    inherited::handleEvent(cmOnVipLoad);
       cfsSetCurrentContainer('PRNVARIATMCUSL.SCRPRNVARIATMCUSL.WNASTR');
       cfsCreateObject('button', 'SCRBUTTONS', 'ButDistributionValue', FALSE, butMyCom);
       cfsSetProp('ButDistributionValue','Visible',TRUE);

       cfsSetProp('ButDistributionValue','Size_X',91);
       cfsSetProp('ButDistributionValue','Size_Y',25);
       cfsSetProp('ButDistributionValue','Origin_X', 100);
       cfsSetProp('ButDistributionValue','Origin_Y', 23);


    }


    end;
    end.
Но кнопка не появляется!! :-(
Прочитал и этот пост и другие, вроде все делаю аналогично. В чем проблема? Ранее не доводилось докомпилировтаь фейсы
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Alter interface

Сообщение m0p3e »

Работающий пример добавления кнопки:

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

cmOnVipLoad :
 {
  inherited::handleEvent ( cmOnVipLoad );

  cfsSetCurrentContainer ( 'RECWIN07_01.SCRVACBUTTONS1' );

  var iObj : LongInt;
  cfsCreateObject ( 'BUTTON', 'SCRVACBUTTONS1', 'MakeReport', false, iObj );
  cfsSetProp ( iObj, cfpOrigin_X, 10 );
  cfsSetProp ( iObj, cfpOrigin_Y, 85 );
  cfsSetProp ( iObj, cfpSize_X, 95 );
  cfsSetProp ( iObj, cfpSize_Y, 24 );
  cfsSetProp ( iObj, cfpCommand, cmValue61 );
  cfsSetProp ( iObj, cfpTitle, 'Отчет' );
 }; //cmOnVipLoad
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Alter interface

Сообщение savov »

Я думаю, ошибаюсь с наименованием контейнера, как его определить? Поясните плиз
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Alter interface

Сообщение savov »

Попробовал приведенный код
На "cfp..." орет, что нет такой функции
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Alter interface

Сообщение savov »

Если префикс cfp убрать и взять в кавычки ( как было в моем коде), то компиляция проходит, но кнопки нет.
Ответить