Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс с IMPLEMENTS загнать в библиотеку... / 25 сообщений из 68, страница 1 из 3
14.06.2007, 18:13
    #34595717
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Уважаемые гуру FoxPro,

у меня возникла необходимость добавить в свою библиотеку классов класс,
объявляемый с IMPLEMENTS.

Код: plaintext
1.
2.
3.
4.
5.
DEFINE CLASS adoEHandler AS Form
IMPLEMENTS RecordsetEvents IN "adodb.recordset"
***************************************
* тут описание тела класса....
***************************************


Что-то по-простому не получается,
кто-нибуть пробовал?
...
Рейтинг: 0 / 0
15.06.2007, 15:02
    #34598026
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Или это очередное подтверждение отстойности foxpro?
...
Рейтинг: 0 / 0
15.06.2007, 18:37
    #34598874
Al_fa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Anton_Gusev Или это очередное подтверждение отстойности foxpro?
У меня с Implements например никаких проблем не возникает. Но я не собираюсь делать вывод об абсолютной совершенности foxpro на этом основании. Если бы чуть подробнее все описал , то возможно тебе бы что и подсказали. Мы же здесь не телепаты , чтобы брать все детали из твоей головы.
...
Рейтинг: 0 / 0
15.06.2007, 19:23
    #34598952
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
то есть слова "добавить в свою библиотеку классов" ничего Вам не говорят?

... хорошо,

1. есть библиотека классов - файл my-custom-mega-class.vcx.
2. есть класс, объявленный в программе (в файле mega-main.prg) - см. мой первый пост.
3. хочу, чтобы класс из п.2 оказался в библиотеке классов из п.1
...
Рейтинг: 0 / 0
15.06.2007, 19:56
    #34598998
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
А теперь поясните вкладываемый Вами в слово "оказался" смысл и какое отношение в Вашем понимании к этому имеет Implements.
...
Рейтинг: 0 / 0
15.06.2007, 22:17
    #34599148
Al_fa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Штатными средствами это вряд ли можно сделать. Разве што напрямую поправить vcx. Но только зачем невизуальный обработчик интерфейса вставлять в библиотеку визуальных классов ?
Это похоже на попытку почесать левое ухо правой пяткой. Тем более , что есть целая куча невизуальных классов , которые в vcx не засунуть. Так что без mega-main.prg все равно никак не обойтись.
...
Рейтинг: 0 / 0
15.06.2007, 22:42
    #34599161
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
ок,

обычно как я поступал - с помощь ClassBrowser-a открывал свою
библиотеку (.vcx) и создавал в ней какой-нибуть класс, прописывал
в нем поля и методы - это вы и без меня знаете :).

Теперь я пытаюсь описать в своей библиотеке тем же способом
класс, с одной лишь особенностью - ключевым словом "IMPLEMENTS".

И этто мне никак не удается, потому что я не знаю как указать
ClassBrowser-у, что класс должен имплементировать события
некоторого другого класса (в данном случае adodb.recordset),
ибо не вижу в мастере никаких полей ввода или чекбоксов,
отвечающих за это свойство.

зы:
под "оказался" я подразумевал, что в библиотеке будет
создан класс "adoEHandler" по функциональности идентичный,
описываемому в простой программе через "DEFINE CLASS adoEHandler
AS Form IMPLEMENTS RecordsetEvents IN "adodb.recordset" ...".

> Al_fa
это как же невизуальный?
"DEFINE CLASS adoEHandler AS Form ..."
...
Рейтинг: 0 / 0
15.06.2007, 22:50
    #34599163
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Достал меня уже это фокс - 3 года работаю - одни западлянки - то одного нет, то другого, то через Ж.. работает.
...
Рейтинг: 0 / 0
15.06.2007, 23:10
    #34599172
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Жуть какая...

А Вы не пробовали понять идеологию, на которой построен фокс, а не основываться на идеологии, взятой из какой-то другой системы? На чем основана уверенность, что фокс должен вести себя всегда только в соответствии с Вашими понятиями? Ваши понятия - эталон поведения?

А хелп по теме хорошенько почитали? А там как раз и про recordset есть.
...
Рейтинг: 0 / 0
17.06.2007, 16:19
    #34600391
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Благодарю за совет, но обычно я перерою весь хелп, прежде чем пишу в форум. Возможно я что-то там и упустил, если так - приведите название статьи пожалуйста.
Идею и назначение foxpro прекрасно себе представляю, так что не надо прекрывать его косяки какими-то светлыми идеями. В других системах, предназначенных для тех же целей почему-то все более гладко.

зы: так есть ли какое-то решение моей проблемы :) ?
...
Рейтинг: 0 / 0
17.06.2007, 16:36
    #34600399
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Статья называется так:
Visual FoxPro and Advanced COM

Еще хотелось бы уточнить для решения какой задачи и почему был выбран такой способ?

О каких других, предназначенных для тех же целей идет речь?

Для поиска решения проблемы надо точно знать проблему. Пока же много эмоций и мало технических подробностей.

На фокс три года не с дельфы ли был переход?
...
Рейтинг: 0 / 0
17.06.2007, 23:04
    #34600588
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Sergey SizovЕще хотелось бы уточнить для решения какой задачи и почему был выбран такой способ?
+1

FoxPro лучший Framework для C++ и многие вещи в нем делаются одной простой командой, не прибегая к adodb... Как Вам правильно заметили выше - идеология у FoxPro отличается от Delphi - тут уже все для Вас сделано и очень важно просто применить правильный подход...

But anyway, good luck!
...
Рейтинг: 0 / 0
17.06.2007, 23:33
    #34600606
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
- Понятно на счет статьи - собственно на ее основе и был написан мой класс. Вопрос в том - как класс поиметь в моей библиотеке? Пока у меня такое впечатление, что никак - прийдется создавать файлик с описанием класса и запускать его из главной проги, то есть - как всегда.

- Для какой задачи? Класс создан (исходник скину завтра, если надо) на основе формы с привязкой к событиям ADO. Все это для того, чтобы при загрузке большого числа записей рекордсета асинхронно показывать формочку и на ней индицировать процесс, если он длится более, чем N секунд. При необходимости процесс может быть прерван пользователем.

- Сорри за эмоции - не могли не выплеснуться, хотя место не совсем удачное - кругом одни фаны фокса - на поддержку расчитывать не приходится :) Кто-то тут даже написал типа - "фокспро это религия" - ню-ню :)

- Ранее применял для написания пользовательского интерфейса к БД под винду С++Builder, сейчас параллельно C# изучаю. Не секрет, что эти среды программирования решают широкий круг задач, в которые входят и задачи фокса.

- На фоксе вынужден прогать из-за политики партии :).
...
Рейтинг: 0 / 0
17.06.2007, 23:36
    #34600608
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Sergey Ch Sergey SizovЕще хотелось бы уточнить для решения какой задачи и почему был выбран такой способ?
+1

FoxPro лучший Framework для C++ и многие вещи в нем делаются одной простой командой, не прибегая к adodb... Как Вам правильно заметили выше - идеология у FoxPro отличается от Delphi - тут уже все для Вас сделано и очень важно просто применить правильный подход...

But anyway, good luck!


Да, согласен, фокс ограничивает вашу фантазию и дает то, что он сам считает нужным. То есть нужно изрядно погемороиться, чтобы наваять что-то custom-ное.
...
Рейтинг: 0 / 0
18.06.2007, 07:30
    #34600739
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Anton_Gusev- На фоксе вынужден прогать из-за политики партии :).
Похоже надо или партию менять, или все-таки в нее вступать :)

Зачем ADO-то? Фокс не дельфи или С#. Для 99% задач достаточно встроенных средств, потому что они эффективней, надо только пользоваться ими научиться. Рекомендую книжку почитать М.Базиян "Использование Visual FoxPro 6", там идеология хорошо описана.
...
Рейтинг: 0 / 0
18.06.2007, 09:11
    #34600826
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Anton_Gusev Все это для того, чтобы при загрузке большого числа записей рекордсета асинхронно показывать формочку...
Вот мы и дошли до сути... Зачем "тащить на клиента" много записей? В лучшем случае 1

Теперь Вам можно рассказать, что за задача, когда требуется на клиенте много записей и какая база данных используется для их хранения...

P.S. Про религию Вы зря...
...
Рейтинг: 0 / 0
18.06.2007, 09:17
    #34600839
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Ну что ж, ждем исходники.

Упомянутые системы на основе языка С по определению компиляторы, а фокс - интерпретатор. Одно это уже очень сильно отличает его от этих систем, как, впрочем, и от остальных. Соответственно, и мышление программиста, и применяемые подходы в фоксе иногода очень сильно отличаются от подходов в других системах. И именно это вызывает самые большие сложности у программировавших ранее на "правильных" языках и в силу каких-либо обстоятельств вынужденных перейти на фокс. Боюсь, здесь именно такой случай.
К тому же, фокс сам по себе СУБД, в отличие, опфть же, от упомянутых систем и заточен, в первую очередь, для обработки данных, а не организации взаимодействия различных программ, для чего, собственно, придуманы интерфейсы и их имплементация. Потому в нем и нет секции объявления интерфейса и секции его реализации. Не нужны они при заложенной в фокс идеологии. И это надо понять и принять как данность, а не пытаться бороться с ветряными мельницами. Если использовать предложенную однажды здесь Владимиром Максимовым аналогию с разными типами автомобильного движения в Британии и в Европе. Они разные, но ни про одну из них нельзя сказать, что они "кривые", "заморочные", "отстойные" и т.д.

Потому посоветую еще раз попытаться отбросить уже привычные по С-подобным языкам догмы и привычки и еще раз попытаться понять идеологию фокса. И тогда все сразу встанет на свои места и жизнь станет намного легче.
...
Рейтинг: 0 / 0
18.06.2007, 12:25
    #34601409
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Код, на данной стадии...

Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
*********************************************************
DEFINE CLASS adoEHandler AS Form
*********************************************************
IMPLEMENTS RecordsetEvents IN "adodb.recordset"
*********************************************************
*
*	Пример использования класса
*
*		
*			rsAdo = CreateObject( "ADODB.Recordset" )
*		
*			&& .....
*		
*			rsAdo.CursorLocation= adUseClient
*			rsAdo.Properties("Initial Fetch Size") =  10 		&& или другое значение >  0 
*											    &&   такое вы сможете в фоксе?
*
*			oEvents = NEWOBJECT("adoEHandler")		   && привязка обработчика
*			rsAdo.Open(,,,, adAsyncFetch)
*			EVENTHANDLER(rsAdo, oEvents)
*
*			DO WHILE .T.
*				IF	adStateOpen = rsAdo.State	;
*				OR	oEvents.isCanceled
*					EXIT
*				ENDIF
*				wPause( 0 . 3 )	&& пауза  0 . 3  сек
*				DOEVENTS
*			ENDDO
*
*			&& Дальше работаем с rsAdo
*
*********************************************************

	ADD OBJECT LabelStatus	 AS Label WITH Left= 10 , Top= 10 , AutoSize=.T., Caption="" &&, WordWrap=.T.
	ADD OBJECT ShapeProgress AS Shape WITH Left= 10 , Top= 40 , Height =  10 , Width= 0 , BackColor=RGB( 0 ,  0 ,  128 )
	ADD OBJECT LabelRCount	 AS Label WITH Left= 10 , Top= 60 , AutoSize=.T., Caption=""
	ADD OBJECT ButtonStop	 AS CommandButton WITH Left= 300 , Top= 60 , Caption="Stop", Visible=.T.
	ADD	OBJECT TimerShow	 AS Timer WITH Interval= 2000 
	
	RecordsCount 	=  0 
	isCanceled	  = .F.

	PROCEDURE Init
		This.Caption 		= "Получение данных, состояние..."
		This.WindowType		=  1  
		This.AutoCenter		= .T.
		This.AlwaysOnTop	= .T.
		This.HalfHeightCaption= .T. 
		This.ControlBox		= .F.
		This.BorderStyle	=  2  
		This.Height			=  80 
		This.Width			=  400 
		
		BINDEVENT(This.TimerShow, "Timer", ;
							This, "SetVisible" )
		BINDEVENT(This.ButtonStop, "Click", ;
							This, "StopProcess" )
							
		_Screen.MousePointer=  11 
		DOEVENTS
	*
	***


	PROCEDURE Destroy
		sbMessageStartLoad( ;
			"Загружено записей: " + ;
						TRANSFORM(This.RecordsCount) )
	*
	***

	
	PROCEDURE SetVisible
		This.Visible	= .T.
		
		This.TimerShow.Enabled = .F.
		BINDEVENT(This.TimerShow, "Timer", ;
						This, "IncrementProgressBar")
		This.TimerShow.Enabled = .T.
		
		_Screen.MousePointer=  0 
	*
	***


	PROCEDURE StopProcess
		This.isCanceled	= .T.
		This.ButtonStop.Enabled = .F.
		DOEVENTS
	*
	***


	PROCEDURE IncrementProgressBar
		This.ShapeProgress.Width = This.ShapeProgress.Width +  2 
		This.LabelRCount.Caption = "Получено записей: " + ;
									TRANSFORM(This.RecordsCount)
				
		IF	This.ShapeProgress.Width > (This.Width -  20 )
			This.ShapeProgress.Width =  0 
		ENDIF
		DOEVENTS
	*
	***
		

	PROCEDURE Recordsetevents_WillChangeField(	;
					cFields		AS Number @, 	;
					Fields		AS VARIANT @, 	;
					adStatus	AS VARIANT @, 	;
					pRecordset	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', начало обновления'
	*	wPause ( 1 )
	***	
	
	PROCEDURE Recordsetevents_FieldChangeComplete(	;
					cFields 	AS Number @, 	;
					Fields 		AS VARIANT @, 	;
					pError 		AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @)		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', завершение обновления'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_WillChangeRecord(	;
					adReason 	AS VARIANT @, 	;
					cRecords 	AS Number @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', обновление записи'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_RecordChangeComplete(	;
					adReason 	AS VARIANT @, 	;
					cRecords 	AS Number @, 	;
					pError 		AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', обновление записи завершено'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_WillChangeRecordset(	;
					adReason 	AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', изменение данных'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_RecordsetChangeComplete(	;
					adReason 	AS VARIANT @, 	;
					pError 		AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', изменение данных выполнено'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_WillMove(			;
					adReason 	AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', получение записи'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_MoveComplete(		;
					adReason 	AS VARIANT @, 	;
					pError 		AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', запись получена'
		This.RecordsCount = This.RecordsCount +  1 
		This.IncrementProgressBar()
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_EndOfRecordset(	;
					fMoreData 	AS LOGICAL @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', все данные загружены'
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_FetchProgress(	;
					Progress 	AS Number @, 	;
					MaxProgress AS Number @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', загрузка данных'
		DOEVENTS	
	*	wPause ( 1 )
	***
	
	PROCEDURE Recordsetevents_FetchComplete(	;
					pError 		AS VARIANT @, 	;
					adStatus 	AS VARIANT @, 	;
					pRecordset 	AS VARIANT @) 		AS VARIANT

		This.LabelStatus.Caption = TRANSFORM(DATETIME())+', данные загружены'
		DOEVENTS
	*	wPause ( 1 )
	***
ENDDEFINE
***
...
Рейтинг: 0 / 0
18.06.2007, 12:45
    #34601521
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Sergey Ch
Вот мы и дошли до сути... Зачем "тащить на клиента" много записей? В лучшем случае 1


Понимаете, Сергей, теоретицки могут возникнуть условия, что вы и одну запись будете полчаса тащить с сервака. Помимо этого, существуют требования заказчиков, которым надо все записи, и сразу :) - из всего этого вытекают компромисные решения (типа моего (: ).


> Sergey Sizov

То есть вы хотите сказать, что фокс не компилирует в exe-шник? Хотя это отдельная песня.. А если серьезно - я смотрел примеры для VB, который тоже является интерпетатором - там тоже во многих моментах все проще и очевидней. И еще вы говорили, что фокс заточен под обработку информации - тогда где же в нем, например, "regular expressions" (а в VB есть), или встроенные функции форматированного i/o (аля sprintf или scanf)? А встроенные средства для трансформации xslt?

Встроенные визуальные компоненты фокса у меня тоже не вызывают доверия - вспомните про изобилие тем типа "хочу нормальный грид?" или "$%^##!, когда они меню сделают нормальное?".

Согласен только с тем, что фокс идеально подходит для работы со своими БД и с MSSQL через ODBC.
...
Рейтинг: 0 / 0
18.06.2007, 13:08
    #34601602
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
По основному вопросу:

А не изобретаете ли Вы велосипед? А чем не подходит курсор-адаптер?

По остальным вопросам:

Бэйсик хоть и интерпретатор был при своем рождении сейчас таким не является. К тому же он не заточен для работы с данными и не СУБД. Это язык общего назначения. Потому для сравнения с фоксом не годится.

А в MS SQL сервере есть перечисленное? Там все в одном флаконе делается? Или таки за счет расширенных хранимок функциональность наращивается? Опять мимо кассы.

Понятие "нормальности" относится в вкусовым, а они, как известно, обладают ислючительной индивидуальностью. При этом можно отметить некоторую корреляцию между отсутствием опыта и знаний фокса с одной стороны и громкостью вот таких вот криков про нормальный грид. Хорошо изучившие и понявшие принципы работы грида таких криков не издают совсем. И кричащие, в основном, базируются на опыте работы в других системах, где все это работает совершенно по-другому и, естественно, совершенно не подходит к фоксу. Возвращаясь к упомянутой уже аналогии Владимира Максимова, они пытаются ехать на леворукой машине по британской дороге и кричат, что тут все дороги сделаны неправильно и им нужна правильня дорога.
...
Рейтинг: 0 / 0
18.06.2007, 13:17
    #34601647
Al_fa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Все обработчики событий можно выделить в отдельный класс на основе prg , например ADOEvents.
Форму с прогрессом Вы можете создать в vcx библиотеке.
Связку обработчика с рекордсетом можно делать в спец методе или в Init,примерно так

Код: plaintext
1.
2.
3.
4.
5.
Procedur SetHandler (Init)
 Lparameters  m.orsAdo
 =This.NewObject('ADOEventHandler','ADOEvents','mega-main.prg')
 =Eventhandler(m.orsAdo,This.ADOEventHandler)
Endproc 
...
Рейтинг: 0 / 0
18.06.2007, 13:32
    #34601727
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Sergey Sizov.По основному вопросу:
А не изобретаете ли Вы велосипед? А чем не подходит курсор-адаптер?


Курсорадаптер достаточно новая вещь в фоксе, поэтому я отношусь к нему с еще большим недоверием, чем к чему-то еще в фоксе (анекдот знаете? "никому нельзя доверять, даже себе") . Серьезно - к-адаптер поддерживает асинхронную работу?


Sergey Sizov.А в MS SQL сервере есть перечисленное? Там все в одном флаконе делается? Или таки за счет расширенных хранимок функциональность наращивается? Опять мимо кассы.


MSSQL - это хорошо делает свою работу и не пытается представлятья ничем другим, как СУБД, а не средством разработки клиентских приложений (за что его и уважаю). Конечно, хотелось бы там видеть RE тоже, как в MySQL сейчас.


Sergey Sizov.
При этом можно отметить некоторую корреляцию между отсутствием опыта и знаний фокса с одной стороны и громкостью вот таких вот криков про нормальный грид. Хорошо изучившие и понявшие принципы работы грида таких криков не издают совсем.

Может вы и правы - чтобы изучить фоксовый грид, нужно потратить больше времени, чем при изучении другого грида со схожей функциональностью.

> Al_fa

Спасибо, надо попробовать..
...
Рейтинг: 0 / 0
18.06.2007, 13:45
    #34601789
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Ну и зря Вы так к нему относитесь. Оченно хорошая штука, особенно если с умом подходить. Заточен в том числе и под ADO.
...
Рейтинг: 0 / 0
18.06.2007, 13:46
    #34601799
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Может вы и правы - чтобы изучить фоксовый грид, нужно потратить больше времени, чем при изучении другого грида со схожей функциональностью.


Я этого не утверждал и считаю это утверждение спорным.
...
Рейтинг: 0 / 0
10.08.2007, 17:50
    #34720797
Anton_Gusev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс с IMPLEMENTS загнать в библиотеку...
Привет, вынужден опять поднять эту тему..

Вопрос с IMPLEMENTS так и остался нерешенным красиво, но теперь я напоролся
еще на одни схожие грабли - есть класс:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DEFINE CLASS MY1 AS Custom	OLEPUBLIC
	Name		= "MY1"
	lusTaskCode   = NULL
	ldtCreateDate = NULL
	
	ADD OBJECT oFoo1	AS Custom
	ADD OBJECT oFoo2	AS Collection
ENDDEFINE

и теперь я хочу, чтобы в моей библиотеке mylib.vcx появился такой класс. Проблема в том, что я не знаю как визуальными средствами добавить поля oFoo1 и oFoo2.

и еще вопрос на засыпку - почему фокс не дает объявить внутри класса член с тем же типом, что и сам класс? и можно ли это преодолеть?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Класс с IMPLEMENTS загнать в библиотеку... / 25 сообщений из 68, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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