Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / При использовании COM-интерфейса не все методы срабатывают / 2 сообщений из 2, страница 1 из 1
13.04.2006, 12:14
    #33663844
Сергей А.М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании COM-интерфейса не все методы срабатывают
На форме есть ActiveX элемент. В качестве источника данных для него можно использовать класс поддерживающий соответствующий интерфейс, определенный в этом же ActiveX. Вот как я его реализовал.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
DEFINE CLASS myclass AS SESSION OLEPUBLIC
	*
	IMPLEMENTS IVSFlexDataSource IN "c:\windows\system32\vsflex8u.ocx"
	*
	PROTECTED FUNCTION IVSFlexDataSource_GetFieldCount() AS Integer
		MESSAGEBOX("GetFieldCount",  64 , "IVSFlexDataSource")
		RETURN  4 
	ENDFUNC
	*
	PROTECTED FUNCTION IVSFlexDataSource_GetFieldName(Field AS Number) AS Integer
		MESSAGEBOX("GetFieldName",  64 , "IVSFlexDataSource")
		LOCAL res
		res = "name"
		DO CASE
			CASE Field =  0 
				res = "Angle (Deg)"
			CASE Field =  1 
				res = "Angle (Rad)"
			CASE Field =  2 
				res = "Sine"
			CASE Field =  3 
				res = "Co-Sine"
		ENDCASE
		RETURN res
	ENDFUNC
	*
	PROTECTED FUNCTION IVSFlexDataSource_GetRecordCount() AS Integer
		MESSAGEBOX("GetRecordCount",  64 , "IVSFlexDataSource")
		RETURN  360 
	ENDPROC
	*
	PROTECTED FUNCTION IVSFlexDataSource_GetData(Field AS Number, Record AS Number) AS STRING
		MESSAGEBOX("GetData",  64 , "IVSFlexDataSource")
		LOCAL res
		res = NULL
		DO CASE
			CASE Field =  0 
				res = Record
			CASE Field =  1 
				res = Record /  180  *  3 . 1416 
			CASE Field =  2 
				res = Sin(Record /  180  *  3 . 1416 )
			CASE Field =  3 
				res = Cos(Record /  180  *  3 . 1416 )
		ENDCASE
		RETURN res
	ENDFUNC
	*
	PROTECTED PROCEDURE IVSFlexDataSource_SetData(Field AS Number, Record AS Number, newData AS STRING) AS VOID
		MESSAGEBOX("This data is read-only.",  64 , "IVSFlexDataSource")
	ENDPROC
	*
ENDDEFINE
Проблема в том, что срабатывает только метод для сохранения данных (IVSFlexDataSource_SetData), остальные нет. Хочу заметить, срабатывает метод, который не возвращает данных в отличии от остальных.
В чем грабли? Заранее спасибо.
...
Рейтинг: 0 / 0
13.04.2006, 15:07
    #33664730
guid2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании COM-интерфейса не все методы срабатывают
такая же проблема с другим активом - проседуры работают а функции нет - значит в фоксе какие-то тонкости
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / При использовании COM-интерфейса не все методы срабатывают / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]