Адрес этой странички : http://spcalc.narod.ru/spcalc_axf_common.htm
spCalc_des_axf.ocx
Простая ActiveX-форма.  

Общая информация. 


Назначение ActiveX-формы :

Интерпретатор (синтаксис object-pascal), позволяющий разрабатывать и выполнять скрипты, реализующие достаточно сложные алгоритмы расчетов и информационного обмена с другими системами (например, Excel(OLE), Базы Данных (BDE-5)). 

Есть возможность прочитать значения переменных выполненного скрипта из приложения (где используется эта ActiveX-форма).

Для доступа к таблицам баз данных используется пакет BDE-5.

Ниже представлен внешний вид ActiveX-формы :

 

Регистрация ActiveX-формы в Windows :
    RegSvr32 spCalc_des_axf.ocx

Методы и свойства :

Свойство :
Visible : boolean;
Визуализация формы (по умолчанию = true).
Чтение/Запись


Метод :
function Version: WideString;
Возвращаемое значение: Версия ActiveX формы.


Свойство :
WorkDir : WideString;
Рабочий каталог (в этом каталоге находится файл spCalc_Consts.txt).
Чтение/Запись


Свойство :
Script_Text: WideString;
Текст скрипта.
Чтение/Запись (при записи старый текст будет стерт без предупреждения, даже если он был модифицирован Пользователем).


Свойство :
Script_Modified: integer;
Признак того, что скрипт был изменен Пользователем.
Если =true – текст скрипта был модифицирован, но не сохранен.
Только Чтение.


Свойство :
Script_FileName: WideString;
Имя файла скрипта (если он был заружен из файла или сохранен в файл).
Только Чтение.


Свойство :
Script_CountLines: integer;
Кол-во строк в скрипте.
Только Чтение.



Метод :
procedure Script_New;
Новый скрипт (старый текст будет стерт без предупреждения, даже если он был модифицирован Пользователем).



Метод :
function Script_LoadFromFile (const FileName: WideString): Integer;
Загрузить скрипт из файла FileName (старый текст будет стерт без предупреждения, даже если он был модифицирован Пользователем)
Возвращает кол-во строк загруженного скрипта.



Метод :
function Script_SaveToFile (const FileName: WideString): Integer;
Сохранить скрипт в файл FileName
Возвращает кол-во строк сохраненного скрипта.



Метод :
function Script_LoadFromClipboard: Integer;
Загрузить скрипт из Clipboard (старый текст будет стерт без предупреждения, даже если он был модифицирован Пользователем).
Возвращает кол-во строк загруженного скрипта.



Метод :
function Script_SaveToClipboard: Integer;
Сохранить скрипт в Clipboard.
Возвращает кол-во строк сохраненного скрипта.



Метод :
function Script_Compile(var sErr: WideString): Integer;
Компиляция скрипта (контроль синтаксических ошибок).
Возвращаемое функцией значение :
=1 – нет ошибок
=0 – есть ошибки (расшифровка в переменной sErr)


Метод :
function Script_Run: Integer;
Компиляция и выполнение скрипта.
Возвращаемое значение: =1 – в случае успеха ( =0 в противном случае)




Метод :
function Script_GetVal(const VarName: WideString): OleVariant;
Получить значение переменной VarName после выполнения скрипта.
Возвращаемое значение: VARIANT.



Метод :
function Script_GetVal_AsString( const VarName: WideString): WideString;
Получить значение переменной VarName после выполнения скрипта.
Возвращаемое значение: String (строка).



Метод :
function Script_GetVal_AsInteger(const VarName: WideString): Integer;
Получить значение переменной VarName после выполнения скрипта.
Возвращаемое значение: Integer (целое число).



Метод :
function Script_GetVal_AsFloat(const VarName: WideString): Double;
Получить значение переменной VarName после выполнения скрипта.
Возвращаемое значение: Double (вещественное число).


Метод :
function Script_GetVal_AsBoolean(const VarName: WideString): WordBool;
Получить значение переменной VarName после выполнения скрипта.
Возвращаемое значение: BOOLEAN;



Метод :
function DeleteCharsFromString(const Sx: WideString; CodeChar: Integer): WideString;
Удалить из заданной строки символы с ascii-кодом CodeChar
Возвращаемое значение – исходная строка без символов CodeChar.
Полезно (например), если из строки (или текста скрипта) нужно убрать символы CR (ascii-код = 13) или другие спец.символы.

 


Ниже – пример использования (внешняя обработка в системе 1С:Предприятие версии 8).
Имя файла обработки : spCalc_test.epf.

Чтобы внедрить ActiveX-форму в форму обработки, нужно выбрать меню «Вставить ActiveX» :

 

Затем, выбрать spCalc_design из списка :

 

Ниже – вид формы внешней обработки spCalc_test.epf :

 

 

Ниже – обработчики соответствующих событий на форме :

 

Ниже – результат тестирования внешней обработки.


Запустим программу 1С:Предприятие (v 8) , откроем внешнюю обработку spCalc_test.epf и введем текст скрипта :

Var
    Sx : string;
    i : integer;
BEGIN
    for i := 1 to 3 do
    begin
        Sx:='Привет-'+IntToStr(i)+', как дела ?';
        ShowMessage(Sx);
    end;
END.

 

и нажмем на кнопку «Выполнить скрипт».

На экране появится сообщение :

 

 

По окончанию действия скрипта (на экране трижды появится наше сообщение) , 
введите имя переменной Sx в соответствующее поле :

 

и нажмите на кнопку «Получить значение переменной».
Результат приведен ниже :

Т.е., метод Script_GetVal_AsString (ActiveX-формы) вернул последнее значение переменной Sx.

 

 

Теперь модифицируем вышеприведенный скрипт следующим образом :

 

 

Результат выполнения представлен ниже :

 

 

Теперь, попробуем такой пример :

Var
    R : string;
begin
    //Конвертировать десятичное целое число 5 в двоичное представление
    R := Int10_to_Another(5, 2);
end.

Этот скрипт можно записать и в одну строку :

    var R:string;begin R:=Int10_to_Another(5,2);end.

После выполнения скрипта прочитаем значение переменной R.
Оно будет равно 101 (представление числа 5 в двоичной системе).

 

Возможности ActiveX-формы, как интерпретатора скриптов, в основном соответствуют возможностям программы spCalc.exe.
Т.е., с перечнем и описанием процедур, функций и возможностей интерпретатора можно ознакомиться  здесь.

Нюансы и отличия :  описания пока что нет ...

 



© Sergey Popov, Usinsk, Komi, 2007

Hosted by uCoz