Докомпиляция L_DOGOVOR::GetCalPlan

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

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

Ответить
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение 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" родительского интерфейса
В ответ умных мыслей не имею.. :eek: Прошу подсказки..
(Галактика 8.1, атлантис 5.4.44)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение 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.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Докомпиляция L_DOGOVOR::GetCalPlan

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

У нас докопилирован этот интерфейс... но смотрю есть вот такой код, может Вам поможет ...

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

#include ExtAttr.Vih
Alter Interface GetCalPlan;

ExtendFormats trCalPlan01;

var oExAttr: iExtAttr;
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение 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 написал по аналогии без понимания..
Алексей, напрямую добавление строк не помогло.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение Den »

#include Marker.vih
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение edward_K »

Вот вам от 8 Marker.Vih, если нет(он в пакете атлантиса, в Viper должен быть)
Вообще пора на Viper переходить. Ну или можно в cfg включить загрузку объектов из ресурсов
(смотрите в доке - в viper галочка есть 8) )

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

#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
Откуда: Челябинск
Контактная информация:

Re: Докомпиляция L_DOGOVOR::GetCalPlan

Сообщение zna »

Да, так Marker нашёлся, но исходная ошибка осталась..
Пробую по- другому
Ответить