Страница 1 из 1
Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 18 янв 2018, 13:38
zna
Доброго всем дня, уважаемые.
Делаю нехитрую докомпиляцию озвученного интерфейса
Код: Выделить всё
#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)
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 21 янв 2018, 22:52
edward_K
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.
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 22 янв 2018, 06:36
Алексей
У нас докопилирован этот интерфейс... но смотрю есть вот такой код, может Вам поможет ...
Код: Выделить всё
#include ExtAttr.Vih
Alter Interface GetCalPlan;
ExtendFormats trCalPlan01;
var oExAttr: iExtAttr;
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 22 янв 2018, 15:46
zna
Спасибо за ответы. Попытался сделать объектный интерфейс- наследник в той же компоненте
Код: Выделить всё
#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 написал по аналогии без понимания..
Алексей, напрямую добавление строк не помогло.
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 22 янв 2018, 17:25
Den
#include Marker.vih
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 22 янв 2018, 18:41
edward_K
Вот вам от 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
Re: Докомпиляция L_DOGOVOR::GetCalPlan
Добавлено: 24 янв 2018, 08:56
zna
Да, так Marker нашёлся, но исходная ошибка осталась..
Пробую по- другому