powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Классы
25 сообщений из 60, страница 2 из 3
Классы
    #35698464
XoTaBbI4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо, хорошо..жду...
...
Рейтинг: 0 / 0
Классы
    #35761341
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример разработки самонастраиваемого класса, происходящее при инициализации, приведен.
В проекте имеется модуль - test_create_cad – можно поиграться и посмотреть механизм взлета, попробовать добавить свои строки настроек в настроечную табличку.
В модуле test_create_cad приведен пример создания кадов и обращением к различным строкам настроечной таблицы.
Таким образом создан класс, начинка(методы) которого остаются неизменными, а видоизменения его поведения достигается с помощью создания строк-настроек во внешней табличке (в реальном приложении конечно-же вместо родной таблички может быть что угодно).


Для чего нужно все это?
Это пример иного программирования в фокспро, когда масштабирование приложения достигается
путем создания унив-й библиотеки и настроечных сущностей, когда доработки производятся не
с использованием кода фокспро (синтаксиса среды), а настройкой, изменением настроечных сущностей.
Приведен игрушечный фрейм для настройки датасущности.
...
Рейтинг: 0 / 0
Классы
    #35761343
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Классы
    #35761344
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Классы
    #35761347
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Классы
    #35761955
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: нужно это кому-то, стоит продолжать?
...
Рейтинг: 0 / 0
Классы
    #35761968
прошелмимоВопрос: нужно это кому-то, стоит продолжать?
Продолжай. Давно хотел посмотреть твой вариант работы КАД.
...
Рейтинг: 0 / 0
Классы
    #35761985
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так здесь будет просто игрушечный вариант для
нативных таблиц, но принцип один - подг-ка и хранение
абстрактных настроек
...
Рейтинг: 0 / 0
Классы
    #35762008
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортвой вариант работы


для реально работающей библиотеки это нечто иное,
здесь-же я это пока не стану показывать

вот для примера метод настройки, понятно, что без остальных методов - это набор мусора,
но так для того, чтобы не быть голословным и для того, чтобы просто посмотреть
Код: 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.
lparameters tcSql_updateTableName, 	;  	&& таблица на сервере	
			tcCADkeyFieldList, 		;	&& ключь-линк в таблице
			tcCADupdatableFieldList,;	&& обновляемые поля в таблице  (список через запятую)
			tcCADcursorSchema, 		;	&& схема - преобразов-е типов  (список через зяпятую)
			tcWhere, 				;	&& условие в запросе (выражение после WHERE)
			tcSelectedFieldsList,   ;	&& поля в строке запроса (необяз-й параметр)
			tcGroupBy,				;	&& строка - список через запятую
			tcOrderBy,				;	&& строка - список через запятую
			tcSelectCmdADD,			;	&& добавчик к SelectCmd
			tcSelectCmd,			;	&& если уж совсем нестандартный запрос, то передаем сюда уже готовый запрос
			tcTimeStampFieldsList       && список полей TimeStamp

with this
	if !.llocktransactions and !.CheckConnection()
		return .f.
	endif

	.Tables         	= tcSql_updateTableName
	.keyFieldList		= tcCADkeyFieldList
	* начитываем если необходимо список полей в таблице на Sql сервере
	.CheckUpdatableFieldList(@tcCADupdatableFieldList, tcSelectedFieldsList, tcTimeStampFieldsList)
	.UpdatableFieldList = upper(strtran(strtran(tcCADupdatableFieldList, "[", ""), "]", "")) && строка в виде 'Fld1, Fld2'
	.sendUpdates = !empty(.UpdatableFieldList)
	
	* номер соединения
	.DataSource = cast(.nConnection as integer)
	
	* формируем запрос для КАДа
	if !empty(tcSelectCmd) and vartype(tcSelectCmd)="C"
		.cSelectCmd_const = tcSelectCmd
	else
		text to .cSelectCmd_const noshow textmerge pretext  15  
			select
				<<iif(empty(tcSelectedFieldsList), tcCADkeyFieldList+","+tcCADupdatableFieldList, tcSelectedFieldsList)>>
				from <<tcSql_updateTableName>>
		endtext
	endif
	
	text to .cSelectCmd_ADD noshow textmerge pretext  15  
		<<iif(!empty(tcGroupBy), "GROUP BY "+tcGroupBy, "")>>
		<<iif(!empty(tcOrderBy), "ORDER BY "+tcOrderBy, "")>>
		<<iif(!empty(tcSelectCmdADD), tcSelectCmdADD, "")>>
	endtext	
	.cWhere	  = tcWhere && складываем все в строку
	
	if !empty(tcCADcursorSchema) and .checkcursorschema(@tcCADcursorSchema)
		.cursorsChema 	= tcCADcursorSchema   && строка в виде 'Fld c(16)'
	else
		if !empty(tcCADcursorSchema)		
			return .f. 
		endif
	endif
	.UseCursorSchema = !empty(.cursorschema)
		
	local laFieldsArr( 1 ), lnField, lcField 
	* формируем строку для апдейта
	.updateNameList 	=  iif( !empty(tcCADkeyFieldList), ;
								tcCADkeyFieldList + ' ' + .Tables+'.'+tcCADkeyFieldList, ;
								"")
	for lnField= 1  to alines(laFieldsArr,tcCADupdatableFieldList,',')
		lcField = alltrim(laFieldsArr(lnField))
		if !empty(lcField)
			.updateNameList = .updateNameList +iif(!empty(.updateNameList),', ','') + ;
							  strtran(strtran(lcField, "[", ""), "]", "") + ' ' + .Tables+'.'+lcField
		endif
	endfor
	
	* нужно наверное присвоить если действительно есть в селекткмд
	*!*		if !empty(tcTimeStampFieldsList)
	*!*			.TimestampFieldList = tcTimeStampFieldsList
	*!*		endif

endwith
return .t.
...
Рейтинг: 0 / 0
Классы
    #35762059
прошелмимо,

Спасибо, будем смотреть и думать.
...
Рейтинг: 0 / 0
Классы
    #35762081
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСпасибо, будем смотреть и думать.

чего думать, прыгать нужно (анекдот про прапарщика в клетке с бутылкой водки),
шучу

используя фокспро, необходимо стремиться к реализации задачь абстрактными методами,
применению ООП, только используя вкусности и фишки фокспро, используя старшую версию,
можно действительно обосновать целесообразность применения этой среды для разработки.
Только применяя методы, которые позволяют снизить трудозатраты на разработку,
соответственно себестоимость, цену сопровождения ... можно каким-то образом
еще продержаться, разрабатывая ПО с использованием данной среды.
...
Рейтинг: 0 / 0
Классы
    #35762086
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторбудем смотреть и думать

мой способ решения - это отнють не новшество, Вы можете
обратиться к первоисточнику - примерам работы с КАДами, каскадами КАДов от
Марка Касланда.
...
Рейтинг: 0 / 0
Классы
    #35762161
прошелмимо каскадами КАДов от Марка Касланда.
Вот каскадов пока не видел. Ссылку можно?
...
Рейтинг: 0 / 0
Классы
    #35762400
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ссылку давал в 2006 году

Making invoices with grids and cursor adapters
это апрель 2006 г, http://www.utmag.com/,
но прямой ссылки я уже не вижу
...
Рейтинг: 0 / 0
Классы
    #35764354
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжение

на данном этапе
реализован класс app - класс приложение,
содержащий ряд методов, необходимый для старта приложения,
создания основного меню ....

реализована привязка дата-сущностей к списочным формам
(можно самостоятельно настроить строки тест4,тест5 в настроечной таблице)
реализованы спец.классы создания, загрузки форм, привязки источников к формам

если необходимо подробное описание процесса и назначения классов,
то будет выложено описание процесса и архитектуры.
...
Рейтинг: 0 / 0
Классы
    #35764395
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того, чтобы посмотреть пример,
необходимо выполнить модуль start_app.prg


данный пример демонстрирует использование
заранее подготовленного класса-шаблона (списочная форма),
приведены 3 примера настройки и видно, что форма
видоизменяется в зависимости от настроек,
т.е. программировать, создавать сами формы не нужно,
необходимо только правильно описать настройки в настроечной сущности.
...
Рейтинг: 0 / 0
Классы
    #36058976
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжение балета ...

пример доработан

создан тулбар для настройки внешнего вида(шрифтов)
контролов

используется метод ассайн посредством присвоения активного контрола св-ву другого
объекта
продемонстрировано отсутствие и проблем при использовании
присвоения свойствам, у которых имеются ассайн-методы ссылок на объекты.
...
Рейтинг: 0 / 0
Классы
    #36059059
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправлена бага
...
Рейтинг: 0 / 0
Классы
    #36059166
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кого заинтересует о какой баге идет речь в методе X_Assign, то обсуждение здесь

http://forum.foxclub.ru/read.php?29,389087,389087#msg-389087

Если кого заинтересует, как в приведенном примере был сделан "обход" этой баги, то это было сделано путем принудительного "обнуления" ссылки при выходе из объекта. Примерно так

Код: plaintext
1.
2.
3.
4.
5.
* TextBox.GotFocus
objectToolBar.oRefObject = This

* TextBox.LostFocus
objectToolBar.oRefObject = null
...
Рейтинг: 0 / 0
Классы
    #36059265
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВладимирМ

ну накуя ты лезешь?

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

т.е. увидят сам принцип - другой - создаем фрейм
и настраиваем все какими-то внутренним настроечными сущностями

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

пришел, гад, ...
...
Рейтинг: 0 / 0
Классы
    #36059942
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прокомментрировал исключительно вот это

прошелмимо используется метод ассайн посредством присвоения активного контрола св-ву другого объекта
продемонстрировано отсутствие и проблем при использовании
присвоения свойствам, у которых имеются ассайн-методы ссылок на объекты.
Поскольку если уж было специально выделено использование объектных ссылок с Assign() методом, то очевидно, логично уточнить, а о каких проблемах вообще идет речь? Что именно "отсутствует"?

Не было бы этой фразы и я бы ничего не написал...
...
Рейтинг: 0 / 0
Классы
    #36072541
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доработан билдер - возможна настройа заголовков,
можно поиграться - настроить свои списочные формы и заголовки колонок
...
Рейтинг: 0 / 0
Классы
    #36084798
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжение балета (танец с бубнами)
доработан метод атоматического обновления в списках
после изменения их в формах редактирования
...
Рейтинг: 0 / 0
Классы
    #36094366
Wilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр, спасибо. Есть, что почерпнуть.
А продолжение будет? А если еще и небольшое описание (понимаю, что из области фантастики), вообще будет харашо!
...
Рейтинг: 0 / 0
Классы
    #36094451
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будет,
но я могу уделять час два времени на это в неделю.
Вы же должны заметить, что это происходит в конце недели,
завтра постараюсь что-то дописать.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Классы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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