powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс с IMPLEMENTS загнать в библиотеку...
18 сообщений из 68, страница 3 из 3
Класс с IMPLEMENTS загнать в библиотеку...
    #34749090
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С инициализацией проблемы скорее всего?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749198
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LOCAL Conn AS ADODB.Connection

Это, в общем-то, просто подсказка для Intellisence и не более того. Переменные в фоксе нетипизированные и могут иметь занчение любого типа и тип присваиваемого значения может меняться во время работы программы.
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749271
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_Gusev...Кто-то тут даже написал типа - "фокспро это религия" - ню-ню :)Антон, про религию я писал. Поясняю. Программирование на FoxPro формирует определенное мировоззрение, как и религия. И, как и у религии, у него есть адепты. Я - один из них. Правда, давно не практикующий.
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749719
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov
Это, в общем-то, просто подсказка для Intellisence и не более того. Переменные в фоксе нетипизированные и могут иметь занчение любого типа и тип присваиваемого значения может меняться во время работы программы.

Ну так почему же не работает?
Код: plaintext
1.
2.
3.
4.
5.
DEFINE CLASS MyCustom AS Custom
     Name = "MyCustom"

     ADD OBJECT Conn AS ADODB.Connection
ENDDEFINE
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749738
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_Gusev Sergey Sizov
Это, в общем-то, просто подсказка для Intellisence и не более того. Переменные в фоксе нетипизированные и могут иметь занчение любого типа и тип присваиваемого значения может меняться во время работы программы.

Ну так почему же не работает?
Код: plaintext
1.
2.
3.
4.
5.
DEFINE CLASS MyCustom AS Custom
     Name = "MyCustom"

     ADD OBJECT Conn AS ADODB.Connection
ENDDEFINE


1. Вы привели весь код который не получается или о чём-то умолчали?
2. Почему вы думаете, что Фокс знает, что за обьект ADODB, наверное ему надо об этом сказать (если фоксу сказать ADODB = createobject('textbox'), то ADODB будет ссылкой на текстбокс), а Вашем случае на основании чего фокс должен догадаться?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749890
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привел весь код.
Для чистоты эксперемента создал пустой файл с указанным кодом и сохранил в test1.prg.
Далее в командном окне выполнил:

Код: plaintext
1.
2.
SET PROCEDURE TO test1.prg
ccc=NEWOBJECT("MyCustom")

Получил ошибку "Command contains unrecognized phrase/keyword".

PaulWist
Почему вы думаете, что Фокс знает...


1. Потому что он как-то догадывается при использовании, например, "ADD OBJECT YYYY AS Custom".
2. Потому что в хелпе по "DEFINE CLASS" написано, что можно использовать "ActiveX custom control".
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749941
автор1. Потому что он как-то догадывается при использовании, например, "ADD OBJECT YYYY AS Custom".
Custom - встроенный класс и фокс о нем знает. ADODB.CONNECTION - ни разе не встроенный класс и фокс о нем не знает. Новые знания Intellisens'у добавляются через пункт меню Tools-Intellisence Manager. Класс Custom, кстати, там тоже прописан.
автор2. Потому что в хелпе по "DEFINE CLASS" написано, что можно использовать "ActiveX custom control".
Меня терзают смутные сомнения в принадлежности ADODB к "ActiveX custom control".
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34749972
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну, меня тоже сомнения терзают. Попробую поописывать где-нить. Но ведь IntelliSense - только для disign-time, тобишь для удобства редактирования?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750011
Но ведь IntelliSense - только для disign-time, тобишь для удобства редактирования?
Да. А Вы от него еще чего-то захотели?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750058
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И что делать-то?

Хорошо, давайте представим, что речь идет не об adodb.connection, а некотором ActiveX, в котором мы уверены, что он "ActiveX custom control", тогда как мне его прикрутить к классу?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750078
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон, я так понял, что Вы хотите написать некий "самопальный" класс CursorAdapter. Уже более 3 месяцев мучаетесь. Может, стоило потратить это время на изучение собственно класса CursorAdapter его достоинств и недостатков?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750097
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, Владимир, это проблемы по ходу возникают. 3 месяца я б не выдержал :)
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750179
Кстати, присоединюсь к Владимиру. Курсор-адаптер заточен в том числе и под ADO. Унего для этого специальные свойства есть. И так как он нарисован на С, а не на фоксе, то всяко работать будет быстрее Вашего самопального.
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750199
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_GusevИ что делать-то?

Хорошо, давайте представим, что речь идет не об adodb.connection, а некотором ActiveX, в котором мы уверены, что он "ActiveX custom control", тогда как мне его прикрутить к классу?

В HELP по FoxPro есть примеры:

Код: 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.
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the window pop-up menu

frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject("oleObject","oleExcelObject")  && Add OLE object

frmMyForm.cmdCommand1.Visible=.T.  && Display the "Quit" Command button

frmMyForm.oleObject.Visible=.T.  && Display the OLE control
frmMyForm.oleObject.Height =  50   && OLE control height

frmMyForm.Show  && Display the Form

frmMyForm.oleObject.DoVerb(- 1 )  && - 1  for Edit

READ EVENTS  && Start event processing

DEFINE CLASS oleExcelObject as OLEControl
   OleClass ="Excel.Sheet"  && Server name
   DocumentFile = "C:\EXCEL\BOOK1.XLS"  && This file must exist 
ENDDEFINE

DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
   Caption = '\<Quit'  && Caption on the Command button
   Cancel = .T.  && Default Cancel Command button (Esc)
   Left =  125   && Command button column
   Top =  210   && Command button row
   Height =  25   && Command button height

   PROCEDURE Click
      CLEAR EVENTS  && Stop event processing, close form
ENDDEFINE

Т.е. ключевым здесь является синтаксис

Код: plaintext
1.
2.
3.
4.
DEFINE CLASS oleExcelObject as OLEControl
   OleClass ="Excel.Sheet"  && Server name
   DocumentFile = "C:\EXCEL\BOOK1.XLS"  && This file must exist 
ENDDEFINE

Но, для ADODB это все не приемлимо, поскольку он не является ActiveX компонентом. Если так уж хочется оформить это все через класс, то придется писать обертку над командой CreateObject().

Т.е. просто дублировать все методы и свойства ADODB через соответсвующие методы и свойства, например, класса Custom, а внутри этих свойств и методов так прямо "в лоб" и писать CREATEOBJECT("ADODB.Connection")

Ну, что-то вроде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DEFINE CLASS MyConnection AS CUSTOM
	oConn = NULL
	ConnectionString = "provider=vfpoledb.1;;data source=.\MyTestDatabase.dbc"

PROCEDURE Init
	This.oConn = CreateObject("ADODB.Connection")
	This.oConn.ConnectionString = This.ConnectionString
ENDPROC

PROCEDURE Open
	This.oConn.Open()
ENDPROC

ENDDEFINE

Следует также иметь в виду, что RecordSet для FoxPro - это "не естесственный" способ хранения табличных данных. Т.е. еще придется писать свою обертку и для навигации по RecordSet.

Однако все эти обертки уже реализованы в стандартном классе CursorAdapter. Думаете, у Вас получится лучше, чем реализовала команда разработчиков FoxPro?
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750274
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Владимир, буду пробовать что-то.
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750593
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ... Думаете, у Вас получится лучше, чем реализовала команда разработчиков FoxPro? Судя по его постам, он в этом уверен
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750746
Anton_Gusev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плох тот солдат, что не мечтает стать генералом!
...
Рейтинг: 0 / 0
Класс с IMPLEMENTS загнать в библиотеку...
    #34750772
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton_Gusev
Плох тот солдат, что не мечтает стать генералом!
Правильно, Антоха. Не поддавайся им (без фанатизма конечно).
Как говорил Суворов: "Тяжело в учении, легко в бою"
...
Рейтинг: 0 / 0
18 сообщений из 68, страница 3 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс с IMPLEMENTS загнать в библиотеку...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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