как правильно писать alter interface?

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

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

Ответить
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

как правильно писать alter interface?

Сообщение Alpiton »

#ifdef ComponentVersion
#component "Z_Sredn"
#end

alter interface otpusk1;

HandleEvent
cmShiftf5: //кнопка "рассчитать"
{
message('line = #__LINE__');
inherited::HandleEvent(cmShiftf5) ;
message('line = #__LINE__');
}
end;
end.


Под 8.00 этот код работает без замечаний. Под 8.10 после первой мессаги выскакивает окошко "Диалог Z_ZAR::SELECTOT не найден" и расчёта отпуска не проиходит. Что с этим можно сделать?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1. проверте патчи и правильность подключения ресов при компиляции
(vip запустите с ключиком /R и посмотрите там отчет о рабочей станции - должен совпасть с таким же из галки).

2. возможно событие поменялось и надо использовать уже другое.

3. вам никто не запрещает создать сей диалог.
Ну а так на этом форуме вам наверное тока Screw точно скажет.
Могете попробовать в ТП спросить - вдруг подскажут, но не все смогут :).
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

Сообщение Alpiton »

Задача : в скрине SCWCLOSACC в чекбоксе GoNewPer.VidData надо добавить один пункт.

Написать свой скрин, спрятав (hideFormats) галактический, не могу, т.к. в коде есть SetFormat(scWClosAcc) и галактический всё равно будет наверху. Если я своему скрину дам то же имя SCWCLOSACC, компилятор добавит к имени суффикс и галактический скрин останется без изменения.
Я попробовал конфигуратор:

lll := cfsGetObjInfo ('cb_SCWCLOSACC_GONEWPER.VIDDATA', aName, aSelf, aContainer, aType);

тут все выходные переменные заполняются нормально, lll = 0 (cfOk)

aContainer:= aSelf;
lll := cfsCreateObject ('ClusteItem', aContainer, 'ci_SCWCLOSACC_GONEWPER.VIDDATA_новый_пукт', False, aSelf);

тут lll = -21 (cfErrBadFind атом не найден)

Не знаю, что такое атом, в хелпе нашёл функцию cfsRegisterAtomString, но компилятор (5.4.14) её не знает.
Что можно сделать?
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

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

#component "F_CloSch"

Alter Interface  GoNewPer;

#declare CaseMessErr(iErr)
 #iErr : Message('Error create Object #iErr')
#end

#declare CreateCluster(ScrName)

    lErr:=cfsCreateObject('ClusterItem',#ScrName,#ScrName+'_Dop',false, aSelf);
    cfsSetProp(#ScrName+'_Dop', cfpVisible,true);
    cfsSetProp(#ScrName+'_Dop', cfpSkip,false);
    cfsSetProp(#ScrName+'_Dop', cfpTitle,'Новый кластер в чек боксе');
    cfsSetProp(#ScrName+'_Dop', cfpIndex,6);
    cfsSetProp(#ScrName+'_Dop', cfpDataIndex,6);

   case lErr of
    #CaseMessErr(cfErrObjectTypeNotExist);
    #CaseMessErr(cfErrContainerObjectNotExist);
    #CaseMessErr(cfErrCantCreateObject);
    #CaseMessErr(cfErrCreateObjectError);
    #CaseMessErr(cfErrObjectAlreadyExist);
    #CaseMessErr(cfErrBadFieldType);
   end; //case

#end
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
Function AddCluster:boolean;
Var aSelf, lErr : LongInt;
{
   AddCluster := false;

   if(cfsSetCurrentContainer('F_CloSch::goNewPer') <> cfOk)
      {
       Message(''#3'Ошибка установки корневого контейнера', Error);
       Exit;
      }

    #CreateCluster('cb_SCCLOSACC_GONEWPER.VIDDATA') //Protect
    #CreateCluster('cb_SCWCLOSACC_GONEWPER.VIDDATA')//Edit

}

handleevent
cmInit:
  {

    if(inherited :: HandleEvent (cmInit)=heOk)
    {
      AddCluster;
    }
  }


end; //handleevent
End. // Interface;
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

Сообщение Alpiton »

Ged
Не нашёл принципиальных различий между твоим и моим кодом, но твой работает, а мой - нет. Спасибо!
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Что до диалога SELECTOT, то с октября 2006-го он принадлежит компоненту Z_SREDN. Возможно, у ваших заголовочных файлах осталась устаревшая информация (z_zar.vil).
Виталий
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

Сообщение Alpiton »

Сейчас проверил - отпуск заработал. Атлантис обновлялся весной 2009-го
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

Сообщение Alpiton »

Проблема : нет заголовка у новой закладки

В интерфейсе OFPjournal в TabbedSheet tabParameters делаю новую закладку с именем BB.

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

TabbedSheet bottom tabParameters1
Show at (26,21,,);
 panel mp
  table SpStep;
   browse BB 'Спецификация ДО' ('Спецификация ДО',,sci1Esc);
   Show at (26,21,,);
    fields

...............

   end; // bb
 end; // mp
end; // tabbedsheet
Новую закладку могу вызвать программно ( SetFormat(BB); ), а мышкой не могу - нет заголовка.
cfsSetProp('BB' , 'Title', 'новое название'); - работает
SetTabbedSheetTitle(BB , 'новое название'); - не работает
SetFormatEnabled(bb , true) ); - работает
SetTabbedSheetVisible(BB , true)); - не работает
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

Вы добавили browse BB в панель с вкладками tabParameters1
Alpiton
Посетитель
Сообщения: 40
Зарегистрирован: 18 апр 2006, 09:19

Сообщение Alpiton »

В галактическом варианте есть tabParameters и tabParameters1. Я пробовал дать имя для TabbedSheet и так, и эдак, и новое - результат один.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

А панель зачем? может так:

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

TabbedSheet bottom tabParameters1 
   browse BB 'Спецификация ДО' ('Спецификация ДО',,sci1Esc); 
   table SpStep   
   fields 

............... 

   end; // bb 
end; // tabbedsheet 
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

а как перехватить табличное событие браузера ?

есть tabbedsheet, в нем панели, на панельке браузер.

необходимо описывать браузер полностью чтобы добраться до его событий? или что-то типа Inheretie
inherited :: browse brname ?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

ну что то типа :
....
Panel panel1
Table table1;
HandleEvent
cmEdit:
{
// тут реализаете что Вас интересует
}
end;
end;
....
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

спасибо :cool:
а то я всё пытался брауз туда подсунуть. а надо было table
Ответить