Вы можете возвращать значения из элементов управления ActiveX или Visual FoxPro dynamic-link libraries (FLL) в Visual FoxPro.
Для возврата значений из элементов управления ActiveX в Visual FoxPro
-
Используйте в элементе управоения команду RETURN и отправьте единичное значение.
Приведенный ниже пример использует команду RETURN для возврата номера версии, хранимой в VERSION:
![]() | |
---|---|
#define VERSION 101 // здесь может располагаться другой код long CPyCtrl::GetVersion() { // установите здесь номер версии в переменной fVersion возвратите VERSION; } |
Возврат значений из FLL библиотек
Когда вы желаете вернуть значения из FLL библиотек, используйте функции API, а не родные команды C или C++.
![]() |
---|
Когда возвращаете значения из файла элемента управления ActiveX control (.ocx), не используйте функции API для возврата значений из FLL библиотек. Вместо этого используйте команду RETURN. |
Для возврата значений из FLL библиотеки
-
Используйте функции API, перечисленные в приведенной ниже таблице.
Приведенные ниже функции API должны использоваться только для FLL библиотек.
Функция | Описание |
---|---|
Устанавливает возвращаемое функцией значение в строку с нуль-терминатором. |
|
Устанавливает возвращаемое функцией значение в денежную едииницу. |
|
Устанавливает возвращаемое функцией значение в дату. Дата указывается в формате mm/dd/yy[yy]. |
|
Устанавливает возвращаемое функцией значение в дату и время, указаннные в формате mm/dd/yy[yy] hh:mm:ss. |
|
Устанавливает возвращаемое функцией значение в значение с плавающей запятой. |
|
Устанавливает возвращаемое функцией значение в численное значение. |
|
Устанавливает возвращаемое функцией значение в логическое значение. Нуль рассматривается как FALSE. Любое ненулевое значение рассматривается как TRUE. |
|
Посылает завершенную структуру Visual FoxPro Value; любой тип данных Visual FoxPro, за исключением мемо, который может быть возвращен. Вы должны вызвать _RetVal( ) для возврата строки, которая содержит вложенные null-символы или возвращает значение .NULL.. |
![]() |
---|
Для возврата значения типа данных "объект" используйте функцию the _RetVal(),
с заполненным полем |
В приведенном ниже пример Sum
, принимает ссылку на численное
поле в таблице и использует _RetFloat
для возврата суммы значений в
поле:
![]() | |
---|---|
#include <Pro_ext.h> Sum(ParamBlk *parm) { // декларация переменных double tot = 0, rec_cnt; int i = 0, workarea = -1; // -1 является текущей рабочей областью Value val; // GO TOP _DBRewind(workarea); // Get RECCOUNT( ) rec_cnt = _DBRecCount(workarea); // Проходим по таблице for(i = 0; i < rec_cnt; i++) { //Помещаем значение поля в структуру Value _Load(&parm->p[0].loc, &val); // добавляем значение для подсчета общей суммы tot += val.ev_real; // SKIP 1 in the workarea _DBSkip(workarea, 1); } // Возвращаем значение суммы в Visual FoxPro _RetFloat(tot, 10, 4); } // Функция Sum принимает один параметр Reference FoxInfo myFoxInfo[] = { {"SUM", Sum, 1,"R"} }; FoxTable _FoxTable = { (FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Предположим, что в текущей открытой таблице имеется численное поле с именем amount
; приведенная ниже строка кода в прорамме Visual FoxPro
вызовет функцию:
![]() | |
---|---|
? SUM(@amount) |