Программирование на Атлантисе (VIP, FCOM, ARD), FastReport
Модераторы: m0p3e , edward_K , Модераторы
zna
Местный житель
Сообщения: 552 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:
Сообщение
zna » 18 янв 2018, 13:38
Доброго всем дня, уважаемые.
Делаю нехитрую докомпиляцию озвученного интерфейса
Код: Выделить всё
#component "L_DOGOVOR"
alter interface getcalplan; //Окно выбора календарного плана. Используется в ДО в расширенной информации
HandleEvent
cmInit:
{
if inherited::handleEvent(cmInit) = heOk then
{
if cfsCreateObject('Column', 'TRCALPLAN01', 'calp', FALSE, l0) <> cfOk message('..not cfOK!..(');
message('dognom = '+dognom + '; fl = '+fl);
cfsSetProp (l0, cfpVisible,TRUE);
cfsSetProp (l0, cfpTitle, 'Содержание пункта календарного плана');
cfsSetProp (l0, cfpDefWidth, word(40));
cfsSetProp (l0, cfpProtect,true);
}
}
end;
end.
При компиляции имею умную фразу:
Ошибка загрузки описателя таблицы "IPKPMARKER=>PMARKER" родительского интерфейса
В ответ умных мыслей не имею..
Прошу подсказки..
(Галактика 8.1, атлантис 5.4.44)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 21 янв 2018, 22:52
1. Если есть возможность, сделайте наследника в другой компоненте.
2. про ExtendedFormat слышали? как то функция конфигуратора добавлять не есть гуд. Хотя для
броуса покатит.
3. Нет отдельной вихи, объект влкючен прямо в vip
Код: Выделить всё
//******************************************************************************
objInterface IPKPmarker(IMarker);
event function CanMarkPlan(bMsg: boolean): boolean;
event function IsMarked: boolean;
event procedure doSelectAll;
end;
vipInterface PKPmarker(Marker) implements IPKPmarker;
public:
procedure IMarker.MarkUnMarkMouse;
procedure IMarker.MarkUnMarkRec(Nrec : comp);
procedure IMarker.MarkUnMark; // Перегруженные методы
procedure IMarker.Mark; //
procedure IMarker.UnMark; //
procedure IMarker.UnselectAll; //
procedure IMarker.SelectAll; //
end;
Сделайте из него Vih ( про IFNDEF END не забудьте) и включите инклюдом перед Interface.
Вдруг поможет.
Запросите в ТП на вашу версию файл CompSrc\L\L_Dogovor\vip\Pick\GetCalPl.vip
А если есть, то можно попробовать его прибить, а то фейс может нечать пересобираться целиком.
4. Если ничего не получиться можно и просто конфигуратором добавить и выгрузить cnf, вычистить лишнее и подключить вместо alter.
Алексей
Местный житель
Сообщения: 2898 Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область
Сообщение
Алексей » 22 янв 2018, 06:36
У нас докопилирован этот интерфейс... но смотрю есть вот такой код, может Вам поможет ...
Код: Выделить всё
#include ExtAttr.Vih
Alter Interface GetCalPlan;
ExtendFormats trCalPlan01;
var oExAttr: iExtAttr;
zna
Местный житель
Сообщения: 552 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:
Сообщение
zna » 22 янв 2018, 15:46
Спасибо за ответы. Попытался сделать объектный интерфейс- наследник в той же компоненте
Код: Выделить всё
#ifndef _iPKPmarker_
#define _iPKPmarker_
#ifdef ComponentVersion
#component "L_DOGOVOR"
#end
objInterface iPkPmarker(IMarker);
event function CanMarkPlan(bMsg: boolean): boolean;
event function IsMarked: boolean;
event procedure doSelectAll;
end;
vipInterface PKPmarker(Marker) implements iPKPmarker;//Ошибка: Неизвестное имя интерфейса : Marker
public:
procedure IMarker.MarkUnMarkMouse;
procedure IMarker.MarkUnMarkRec(Nrec: comp);
procedure IMarker.MarkUnMark; // Перегруженные методы
procedure IMarker.Mark; //
procedure IMarker.UnMark; //
procedure IMarker.UnselectAll; //
procedure IMarker.SelectAll; //
end;
#endif
Пробовал разные имена родителя: Marker, iMarker, pMarker.. Не находит..Как- то не складывается у меня в готове эта технология с наследованием, vih написал по аналогии без понимания..
Алексей, напрямую добавление строк не помогло.
Den
Местный житель
Сообщения: 1846 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:
Сообщение
Den » 22 янв 2018, 17:25
#include Marker.vih
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 22 янв 2018, 18:41
Вот вам от 8 Marker.Vih, если нет(он в пакете атлантиса, в Viper должен быть)
Вообще пора на Viper переходить. Ну или можно в cfg включить загрузку объектов из ресурсов
(смотрите в доке - в viper галочка есть
)
Код: Выделить всё
#ifndef _OBJMARKER_
#define _OBJMARKER_
#include IModify.vih
#Component ""
ObjInterface IMarker;
// #docl Управляет пометкой записей в браузере. </brief>
procedure MarkUnMarkRec // #docl Помечает, если не помечена, и сбрасывает, если помечена, запись. Валидность не проверяется.
(Nrec // #docl Номер записи. </brief>
: comp);
procedure MarkUnMark // #docl Помечает, если не помечена, и сбрасывает, если помечена, текущую запись. </brief>
;
procedure MarkUnMarkMouse // #docl Помечает запись под указателем мыши. </brief>
;
procedure Mark // #docl Помечает текущую запись. </brief>
;
procedure UnMark // #docl Снимает пометку с текущей записи. </brief>
;
procedure UnselectAll // #docl Cнимает все пометки. </brief>
;
procedure SelectAll // #docl Помечает все записи. </brief>
;
procedure InvertSel // #docl Инвертирует пометку всех записей. </brief>
;
procedure ImportFrom // #docl Импортирует (загружает) помеченные записи из маркера. </brief> Информация о ранее помеченных записях теряется.
(StdMarker // #docl Маркер, из которого производится загрузка пометок. </brief>
: LongInt);
procedure ExportTo // #docl Выгружает помеченные записи в маркер. Содержимое маркера перед операцией очищается. </brief>
(StdMarker // #docl Маркер, в который производится выгрузка пометок. </brief>
: LongInt);
procedure ImportFromName // #docl Импортирует (загружает) помеченные записи из маркера. </brief> Информация о ранее помеченных записях теряется.
(StdMarker // #docl Маркер, из которого производится загрузка пометок. </brief>
: String);
procedure ExportToName // #docl Выгружает помеченные записи в маркер. Содержимое маркера перед операцией очищается. </brief>
(StdMarker // #docl Маркер, в который производится выгрузка пометок. </brief>
: String);
procedure StoreToDsk // #docl Сохраняет помеченные записи в dsk файл. </brief>
;
procedure LoadFromDsk // #docl Загружает помеченные записи из dsk файла. </brief>
;
procedure DeleteRec // #docl Удаляет помеченные записи. </brief>
;
procedure DeleteRecWoMessage // #docl Удаляет помеченные записи без предупреждения. </brief>
;
property pNRec // #docl Чтение /Запись <br> NRec записи в таблице маркера. </brief>
: comp Read Write;
index iByNRec // #docl Индекс по pNRec </brief>
= pNRec (Unique);
protected property Owner // #docl Защищено <br> и недокументировано. </brief>
: LongInt;
property ImageName // #docl Чтение /Запись <br> Имя картинки для помечаемой записи. Значение по умолчанию 'bmMarkBitmap'. </brief>
: string Read Write;
property StoreName // #docl Чтение /Запись <br> Имя под которым будет сохраняться информация о помеченных записях в dsk файле. </brief>
: string Read Write;
property AutoSave // #docl Чтение /Запись <br> Если свойство установлено, то информация о помеченных записях автоматически сохраняется в dsk файле по закрытию интерфейса. Значение по умолчанию false. </brief>
: Boolean Read Write;
property LoadAuto // #docl Чтение /Запись <br> Если свойство установлено, то информация о помеченных записях автоматически загружается из dsk файла в момент создания интерфейса, где описан броузер с автоматизированной пометкой. </brief>
: Boolean Read Write;
property Count // #docl Чтение <br> Свойство содержит количество отмеченных записей. </brief>
: LongInt Read;
property IsCaption // #docl Чтение /Запись <br> Если свойство установлено, то к заголовку интерфейса прибавляется информация о количестве отмеченных записей. </brief>
: Boolean Read Write;
property Caption // #docl Чтение /Запись <br> Строка добавляемая к заголовку интерфейса с информацией о количестве отмеченных записей. Формат строки '... %d .....'. Вместо %d подставится количество записей. </brief>
: String Read Write;
property ShowCaptIsZero // #docl Чтение /Запись <br> Показывать /скрывать заголовок, если количество отмеченных записей равно 0. Значение по умолчанию false. </brief>
: Boolean Read Write;
property Disable // #docl Чтение /Запись <br> Запретить /разрешить автоматизированную пометку. Значение по умолчанию false. </brief>
: Boolean Read Write;
property SendPosChangedWhithGroupDelete // #docl Чтение /Запись <br> Посылать /не посылать сообшение cmPositionChanged, если при удалении помеченных записей была уделена текущая запись. Значение по умолчанию false. </brief>
: Boolean Read Write;
property IsMarkNestedTreeNode // #docl Чтение /Запись <br> Если свойство установлено, то включается режим пометки вложеных элементов при пометке узла дерева. Значение по умолчанию true. </brief>
: Boolean Read Write;
property IsMarkTreeNodeUp // #docl Чтение /Запись <br> Если свойство установлено, то включается проверка необходимости автоматической пометки /снятия узла при изменении пометки его подчленов. </brief>
: Boolean Read Write;
property IsNeedCheckDelete // #docl Чтение /Запись <br> При значении данного свойства false никакая автоматическая обработка не ведется и сообщение cmDelete обрабатывается стандартно. Значение по умолчанию true. </brief>
: Boolean Read Write;
End;
ObjInterface IMarkerEx;
// #docl Системный интерфейс: расширяет возможности IMarker. </brief>
procedure RefreshCaption // #docl Обновить заголовок. </brief>
;
End;
VipInterface Marker implements IMarker,IMarkerEx,IModify;
// #docl Интерфейс, реализующий возможности IMarker и IMarkerEx. </brief>
public :
constructor Init // #docl Инициализирует экземпляр интерфейса. </brief>
;
destructor Done // #docl Выполняет работу по завершению работы интерфейса. </brief>
;
end;
#endif
zna
Местный житель
Сообщения: 552 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:
Сообщение
zna » 24 янв 2018, 08:56
Да, так Marker нашёлся, но исходная ошибка осталась..
Пробую по- другому