:: Обсуждаем проекты
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
Уважаемый Виктор!

Прошел почти год с того времени как Вы выложили здесь свое замечательное решение.
Однако, судя по этой ветке не заметно большого к нему интереса.

Позволю высказать свое мнение - почему.
Фреймворк - очень нужное средство разработки. Но понять это можно лишь наработав
определенный опыт. Начиная программировать новички пытаются решить все проблемы в лоб.
Это понятно - есть конкретная задача и есть средства ее решить напрямую кодируя. А времени -нет.
Нужно выполнять поставленную задачу, а не копаться в чужих программах, имеющих к решению лишь
опосредованное отношение. Гораздо позднее понимаешь, что все конкретные задачи имеют свойство
повторяться - тогда поднимаешь свои старые программы, чистишь коды, стараешься создать
абстрактные процедуры и классы, пригодные для применения в последующем. Создаешь свои генераторы
меню, тулбаров и т.п. И в один прекрасный момент понимаешь - ба, да это же натуральный скелет
для вновь создаваемого приложения, т.е. фреймворк.
Таким образом, новички просто не понимают удобство применения фреймворка, а ветераны, осознавшие его
необходимость, уже имеют свой собственный. Он может быть лучше Вашего, может быть хуже, но он свой
собственный, выстраданный, при возникновении проблем гораздо легче понять где нужно копать.
Уже сложился определенный стиль программирования, пользователи привыкли к интерфейсу и поведению
программ и отказаться от этого очень нелегко даже в пользу продукта гораздо более высокого качества.
Такое будет мое ИМХО.

Ваша нетленка на две головы выше того, что я называю своим фреймворком. Когда запустил Вашу программу
сказал - ВАУ! - и решил переползти на Ваш фреймворк. Но к сожалению, моей квалификации для того,
чтобы разобраться как это все работает оказалось явно недостаточно. Застопорился сразу -
в запускающей программе создается форма в качестве главного рабочего обьекта goApp,
затем следует вызов его метода Kernel, код которого я просто не нашел.

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

С наилучшими пожеланиями, Сергей.
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
К новому году постараюсь выложить на сайт urfin.narod.ru новую версию движка.


------------------
Ratings: 0 negative/0 positive
Re: Нетленка
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Виктор, насколько я понял, им не новая версия нужна, а документация по старой


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Движки предназначены для раздербанивания и доработки рашпилем.
Впрочем подвижки к автодокументированию имеются ... но слабые ... но есть ...


------------------
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin
Благодарю за такой оперативный ответ.
Разумеется, и новую версию движка хотелось бы испытать. Надеюсь, что к ней Вы сможете приложить более подробное описание "что есть что". Я нашел несколько .doc файлов в директории проекта main\other. Боюсь, что они несут слишком мало информации. Труд по созданию фреймворка проделан громадный и будет жаль что многие не смогут им воспользоваться по той простой причине, что не смогли с ним разобраться.

piva
Я только начал разбираться с этим движком, поэтому легко могу оставить старую версию и заняться новой. Но без документации наверное мне не справиться. Имеются некоторые наработки, которые нужно вживить в тело программы, а без достаточно полного понимания механизма работы фреймворка этого не сделать.
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Dag
Основная идея движка ADF спрятана в методе goApp.This_Access() - динамическая подгрузка невидимых InTopLevel форм.
Размышления о целесообразности фрэймворков наводят на размышления ...
Для меня, например, функция EditSource(cShortCutID | [ cFilename [, nLineNo] [, cClassName] [, cMethodName|cProcName]]) - стала открытием года


------------------




Исправлено 1 раз(а). Последнее : urfin, 19.12.06 08:21
Ratings: 0 negative/0 positive
Re: Нетленка
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
urfin
Для меня, например, функция EditSource(cShortCutID | [ cFilename [, nLineNo] [, cClassName] [, cMethodName|cProcName]]) - стала открытием года
Для меня тоже после чего быстренько слепил искалку по проекту


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Цитата:
быстренько слепил искалку по проекту
Хорошая идея, надо будет отпиратить


------------------
Ratings: 0 negative/0 positive
Re: Нетленка
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Забирай - она тут же и лежит
forum.foxclub.ru


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Спасибо, Вадим.


------------------
Ratings: 0 negative/0 positive
Re: Нетленка
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
ПОльзуйтесь, только там указание метода для вложенных объектов, как-то странно сделано, но вроде как я победил, если что сообщи о глюках


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin

"Позор джунглям!"(с)
Так редко пользуюсь замечательными методами _access и _assign (не было их в версии FPW 2.5), что даже не догадался туда заглянуть. Спасибо за подсказку.
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin

Есть несколько вопросов.
Где и каким образом происходит запуск меню и тулбаров, настройка "быстрых клавиш"?
Каким образом к ним можно обращаться ?
Каким образом можно обратиться к текущей форме ?
Каким образом можно обратиться к предыдущей форме ?
Каким образом передаются данные между формами ?
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Цитата:
Где и каким образом происходит запуск меню и тулбаров, настройка "быстрых клавиш"?
cм. в MAIN.PRG вызов .pgfMain.Login() и в SIMPLE.VCX у класса pgfMain метод Start()

Цитата:
Каким образом к ним можно обращаться ?
goApp.Kernel.Menu.StartMenuItem(lnIdMenu)
Посмотри проект .\TASK\KERNEL\Kernel.pjx
Ядро написано средствами самого ядра.
Поставь настройку "Идентификатор запускаемого приложения=1" в MAIN.INI
Запусти MAIN.EXE и все станет ясно.

Цитата:
Каким образом можно обратиться к текущей форме ?
ThisForm, _SCREEN.ActiveForm и т.п.
Во многих местах ссылка на форму передается как параметр toForm или toPanel.Parent
Запусти глобальный поиск и найдешь эти вызовы.
See also : в KERNEL.PJX форма _form.scx метод StartForm() == goApp.Kernel.Form.StartForm()

Цитата:
Каким образом можно обратиться к предыдущей форме ?
Не понял. Хотя глянь тамже метод goApp.Kernel.Form.RegisterForm()

Цитата:
Каким образом передаются данные между формами ?
Было в FAQ на форуме. Вариантов очень много.


------------------




Исправлено 1 раз(а). Последнее : urfin, 20.12.06 06:40
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin

Заранее извиняюсь за глупые вопросы, текучка заедает.

cм. в MAIN.PRG вызов .pgfMain.Login() и в SIMPLE.VCX у класса pgfMain метод Start()

Понятно стало где создаются обьекты тулбаров и меню. А вот где производится вызов pgfMain.Start() не нашел. В методе pgfMain.Login() такой строчки не нашел. Кстати, главный тулбар эмулирует нажатие функциональных клавиш? Где происходит привязка вызываемых процедур(методов) к функциональным клавишам?

Хотя глянь тамже метод goApp.Kernel.Form.RegisterForm()

Т.е. из формы можно вызвать метод goApp.Kernel.Form.RegisterForm(This,xx) и далее обращаться к ней из любого места программы как к члену массива goApp.Kernel.Form.aForm[yy,1], где yy=ASCAN(goApp.Kernel.Form.aForm,xx,,,4,8) или что-то
в этом роде?

Было в FAQ на форуме. Вариантов очень много.

Т.е. какого-то встроенного механизма обмена данными между формами не предусмотрено и это вопрос отдан на усмотрение разработчику?
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Цитата:
А вот где производится вызов pgfMain.Start() не нашел.
В pgfMain.pagCombo.cmdApplay.Click() и pgfMain.pagText.cmdApplay.Click()
Для глобального поиска по проекту удобно использовать пункт меню
"Tools\Code References" среды разработки VFP9.

Цитата:
Где происходит привязка вызываемых процедур(методов) к функциональным клавишам?
Посмотри методы KeyPress() классов форм из MAIN.VCX

Цитата:
Т.е. из формы можно вызвать метод goApp.Kernel.Form.RegisterForm(This,xx)
Вот этого делать не надо. Я показал тебе где суть дела происходит.
Для запуска формы из другой формы используй метод goApp.Kernel.Form.StartForm()

Цитата:
встроенного механизма обмена данными между формами не предусмотрено
Именно так. Вот посмотри, например, как передать результат SQL выборки.
ВАРИАНТ 1:
1) LPARAM tnUserFormDatasessionId AS Integer
2) SELECT ... INTO ARRAY laResult
3) Запоминаем сессию ThisForm.DataSessionId
4) SET DATASESSION TO tnUserFormDatasessionId
5) CREATE CURSOR ...
6) APPEND FROM ARRAY laResult
7) Восстанавливаем запомненную сессию данных
ВАРИАНТ 2:
1) Заводим у формы USER свойство-массив
frmUser.aResult[1,N]
2) Делаем выборку прямо в него SELE ... INTO ARRA goApp.Kernel.User.aResult
ВАРИАНТ 3:
1) Сделать выборку в курсор
2) CURSORTOXML()
3) XML строку передать по назначению (RETURN lcXMLString)
4) XMLTOCURSOR()
и т.д. и т.п. насколько фантазии хватит


------------------




Исправлено 1 раз(а). Последнее : urfin, 21.12.06 06:31
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin

Для глобального поиска по проекту удобно использовать пункт меню "Tools\Code References" среды разработки VFP9.
Спасибо, учусь пользоваться.


Еще вопросы.
Почему в качестве базовых классов для основных рабочих модулей (menu,task,event и др.) выбрана форма? Даже goApp является формой. Почему не использован невизуальный класс (custom)? С первого взгляда кажется логичнее создать невизуальный goApp, затем вызвать форму main для регистрации пользователя, а позднее по возвращенному ею значению принимать решение на запуск программы (выполнить запуск основных свойств-обьектов, тех что сейчас находятся в методе goApp.pgfMain.Start) или выход из программы.
А так получается, что форма регистрации остается болтаться в памяти, потому что она одновременно еще является ядром системы (типа вахтер - он же владелец предприятия).
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Цитата:
Почему в качестве базовых классов для основных рабочих модулей (menu,task,event и др.) выбрана форма?

Одна из идей фрэймворка :
Данные и публичные методы работы с ними отделены от множества форм представления
и сконцентрированы в одном месте - невидимых формах бизнес-объектов
.frmTask.DataEnvironment.Objects + frmTask.SomeMethods()
Если посмотреть внимательно, все формы редактирования содержат пустой DataEnvironment!
Он наполняется "на лету" из "задачной формы" frmTask в момент создания формы.
см. frmComplex.DECopyAndOpen() т.е.
данные и публичные методы работы с ними отделены от множества форм представления

Цитата:
А так получается, что форма регистрации остается болтаться в памяти, потому что она одновременно еще является ядром системы (типа вахтер - он же владелец предприятия).

Окно основного приложения - TopLevel форма, а не _SCREEN.
Она просто обязана "болтаться в памяти"


------------------




Исправлено 1 раз(а). Последнее : urfin, 25.12.06 06:52
Ratings: 0 negative/0 positive
Re: Нетленка
urfin
Автор

Сообщений: 328
Дата регистрации: 17.08.2004
Цитата:
К новому году постараюсь выложить на сайт urfin.narod.ru новую версию движка

26/12/06
На сайт www.urfin.narod.ru
Выложена новая версия "APPLICATION DEVELOPMENT FRAMEWORK" Version 2K6
и 9 дискетных приложений к журналу FoxTalk за 2006 год.

27/12/06
Исправлены ошибки и выложена новая версия.

29/12/06
Произведены усовершенствования и выложена новая версия.


------------------




Исправлено 2 раз(а). Последнее : urfin, 29.12.06 10:34
Ratings: 0 negative/0 positive
Re: Нетленка
Dag

Сообщений: 1156
Дата регистрации: 08.02.2006
urfin

С Новым Годом!

Забежал сюда спросить про обещанную новую версию - а подарочек-то уже под новогодней елкой!
Спасибо!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика