Вы можете возвращать значения из элементов управления 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) | |
Замечание