Создание интерфейсов с помощью VIP
Модераторы: m0p3e, edward_K, Модераторы
-
- Новичок
- Сообщения: 28
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ростов-на-Дону
- Контактная информация:
Создание интерфейсов с помощью VIP
У меня тут такой вопрос:есть ли возможность в VIPе редактировать уже имеющийся интерфейс(используемый в гал-е) и как это сделать?
Re: Создание интерфейсов с помощью VIP
Есть, если у тебя есть исходники стандартных интерфейсов.
В противном случае нет
В противном случае нет
Ищу возможности довести и так отличный продукт до еще большего блеска
Re: Создание интерфейсов с помощью VIP
а хотя что-то еще есть такое типа:
Докомпиляция интерфейсов
Докомпиляция интерфейсов целиком основана на механизме наследования VIP-интерфейсов. Основное отличие состоит в том, что в новом интерфейсе невозможно добавление новых public-функций, разрешается только перегрузка существующих, а также расширение логических таблиц и обработчиков событий.
Для докомпиляции интерфейса необходимо наличие в ресурсе символьной информации (так же как и для наследования ). Однако, запись символьной информации для каждого интерфейса сильно увеличит размер ресурсного файла. Для указания интерфейсов для которых сохранять символьную информацию заведён параметр в CFG файле
Compilers.InhSaveLevel : LongInt;
InhSaveLevel Значение
0 Не сохранять символьную информацию. Дальнейшее наследование и докомпиляция невозможны.
1* Сохранять информацию только для интерфейсов, имеющих прототип, т.е. описаных ранее как VipInterface.
2 Сохранять информацию только для интерфейсов, не имеющих прототипа, т.е. обычные интерфейсы.
3 Сохранять информацию для всех интерфейсов.
* - значение по-умолчанию
Для описания докомпиляции используется следующая конструкция
alter interface <имя_интерфейса>
[ ( [ fix ] <служебная_информация> ) ]
<заголовок> ...
Т.е. к обычному описанию интерфейса добавлен квалификатор alter, а после идентификатора интерфейса - необязательная секция для служебной информации. Ключевое слово fix означает исправление ошибки и смысловой нагрузки не несёт.
Ограничение Докомпиляция интерфейса должна проводится в ресурс, отличный от того, откуда загружается докомпилируемый интерфейс.
В случае, если базовый интерфейс реализовывал какие-либо public-функции, имеется возможность изменить их реализацию. Перегружаемые методы описываются в секции overload, которая должна быть описана сразу после параметров интерфейса. Синтаксис описания такой же, как и при наследовании.
Пример
alter interface vTest ( fix 'исправление грамматической ошибки' ) 'Проверка';
overload
function iTest.Func1 ( var VUglUskR : integer ) : boolean;
end;
function iTest.Func1 ( var VUglUskR : integer ) : boolean;
{
Result := False;
if (inherited :: Func1 (VUglUskR)) then
...
}
HandleEvent
cmValue19: {
...
inherited :: HandleEvent (cmValue18);
...
}
end;
end.
Докомпиляция интерфейсов
Докомпиляция интерфейсов целиком основана на механизме наследования VIP-интерфейсов. Основное отличие состоит в том, что в новом интерфейсе невозможно добавление новых public-функций, разрешается только перегрузка существующих, а также расширение логических таблиц и обработчиков событий.
Для докомпиляции интерфейса необходимо наличие в ресурсе символьной информации (так же как и для наследования ). Однако, запись символьной информации для каждого интерфейса сильно увеличит размер ресурсного файла. Для указания интерфейсов для которых сохранять символьную информацию заведён параметр в CFG файле
Compilers.InhSaveLevel : LongInt;
InhSaveLevel Значение
0 Не сохранять символьную информацию. Дальнейшее наследование и докомпиляция невозможны.
1* Сохранять информацию только для интерфейсов, имеющих прототип, т.е. описаных ранее как VipInterface.
2 Сохранять информацию только для интерфейсов, не имеющих прототипа, т.е. обычные интерфейсы.
3 Сохранять информацию для всех интерфейсов.
* - значение по-умолчанию
Для описания докомпиляции используется следующая конструкция
alter interface <имя_интерфейса>
[ ( [ fix ] <служебная_информация> ) ]
<заголовок> ...
Т.е. к обычному описанию интерфейса добавлен квалификатор alter, а после идентификатора интерфейса - необязательная секция для служебной информации. Ключевое слово fix означает исправление ошибки и смысловой нагрузки не несёт.
Ограничение Докомпиляция интерфейса должна проводится в ресурс, отличный от того, откуда загружается докомпилируемый интерфейс.
В случае, если базовый интерфейс реализовывал какие-либо public-функции, имеется возможность изменить их реализацию. Перегружаемые методы описываются в секции overload, которая должна быть описана сразу после параметров интерфейса. Синтаксис описания такой же, как и при наследовании.
Пример
alter interface vTest ( fix 'исправление грамматической ошибки' ) 'Проверка';
overload
function iTest.Func1 ( var VUglUskR : integer ) : boolean;
end;
function iTest.Func1 ( var VUglUskR : integer ) : boolean;
{
Result := False;
if (inherited :: Func1 (VUglUskR)) then
...
}
HandleEvent
cmValue19: {
...
inherited :: HandleEvent (cmValue18);
...
}
end;
end.
Ищу возможности довести и так отличный продукт до еще большего блеска
-
- Новичок
- Сообщения: 28
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: Создание интерфейсов с помощью VIP
Спасибо, Vitas!