Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
Уважаемый Виктор!
Прошел почти год с того времени как Вы выложили здесь свое замечательное решение. Однако, судя по этой ветке не заметно большого к нему интереса. Позволю высказать свое мнение - почему. Фреймворк - очень нужное средство разработки. Но понять это можно лишь наработав определенный опыт. Начиная программировать новички пытаются решить все проблемы в лоб. Это понятно - есть конкретная задача и есть средства ее решить напрямую кодируя. А времени -нет. Нужно выполнять поставленную задачу, а не копаться в чужих программах, имеющих к решению лишь опосредованное отношение. Гораздо позднее понимаешь, что все конкретные задачи имеют свойство повторяться - тогда поднимаешь свои старые программы, чистишь коды, стараешься создать абстрактные процедуры и классы, пригодные для применения в последующем. Создаешь свои генераторы меню, тулбаров и т.п. И в один прекрасный момент понимаешь - ба, да это же натуральный скелет для вновь создаваемого приложения, т.е. фреймворк. Таким образом, новички просто не понимают удобство применения фреймворка, а ветераны, осознавшие его необходимость, уже имеют свой собственный. Он может быть лучше Вашего, может быть хуже, но он свой собственный, выстраданный, при возникновении проблем гораздо легче понять где нужно копать. Уже сложился определенный стиль программирования, пользователи привыкли к интерфейсу и поведению программ и отказаться от этого очень нелегко даже в пользу продукта гораздо более высокого качества. Такое будет мое ИМХО. Ваша нетленка на две головы выше того, что я называю своим фреймворком. Когда запустил Вашу программу сказал - ВАУ! - и решил переползти на Ваш фреймворк. Но к сожалению, моей квалификации для того, чтобы разобраться как это все работает оказалось явно недостаточно. Застопорился сразу - в запускающей программе создается форма в качестве главного рабочего обьекта goApp, затем следует вызов его метода Kernel, код которого я просто не нашел. Отсюда вопрос имеется ли возможность задокументировать Ваш продукт. Так, чтобы неискушенный пользователь мог понять идеологию работы Вашего фреймворка. Допустим, те апдейты, которые Вы подключали к своим программам имеют краткое описание изменений, что позволяет предположить, что Вы ответственно подходите к процедуре документирования программ. Может у Вас есть нечто подобное - работать с фреймворком стало бы сразу проще и понятнее. С наилучшими пожеланиями, Сергей. |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
К новому году постараюсь выложить на сайт urfin.narod.ru новую версию движка.
------------------ |
Re: Нетленка | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Виктор, насколько я понял, им не новая версия нужна, а документация по старой
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Движки предназначены для раздербанивания и доработки рашпилем.
Впрочем подвижки к автодокументированию имеются ... но слабые ... но есть ... ------------------ |
Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
urfin
Благодарю за такой оперативный ответ. Разумеется, и новую версию движка хотелось бы испытать. Надеюсь, что к ней Вы сможете приложить более подробное описание "что есть что". Я нашел несколько .doc файлов в директории проекта main\other. Боюсь, что они несут слишком мало информации. Труд по созданию фреймворка проделан громадный и будет жаль что многие не смогут им воспользоваться по той простой причине, что не смогли с ним разобраться. piva Я только начал разбираться с этим движком, поэтому легко могу оставить старую версию и заняться новой. Но без документации наверное мне не справиться. Имеются некоторые наработки, которые нужно вживить в тело программы, а без достаточно полного понимания механизма работы фреймворка этого не сделать. |
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 |
Re: Нетленка | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Для меня тоже после чего быстренько слепил искалку по проекту ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Цитата:Хорошая идея, надо будет отпиратить ------------------ |
Re: Нетленка | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Забирай - она тут же и лежит
forum.foxclub.ru ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Спасибо, Вадим.
------------------ |
Re: Нетленка | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
ПОльзуйтесь, только там указание метода для вложенных объектов, как-то странно сделано, но вроде как я победил, если что сообщи о глюках
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
urfin
"Позор джунглям!"(с) Так редко пользуюсь замечательными методами _access и _assign (не было их в версии FPW 2.5), что даже не догадался туда заглянуть. Спасибо за подсказку. |
Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
urfin
Есть несколько вопросов. Где и каким образом происходит запуск меню и тулбаров, настройка "быстрых клавиш"? Каким образом к ним можно обращаться ? Каким образом можно обратиться к текущей форме ? Каким образом можно обратиться к предыдущей форме ? Каким образом передаются данные между формами ? |
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 |
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 на форуме. Вариантов очень много. Т.е. какого-то встроенного механизма обмена данными между формами не предусмотрено и это вопрос отдан на усмотрение разработчику? |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Цитата:В pgfMain.pagCombo.cmdApplay.Click() и pgfMain.pagText.cmdApplay.Click() Для глобального поиска по проекту удобно использовать пункт меню "Tools\Code References" среды разработки VFP9. Цитата:Посмотри методы KeyPress() классов форм из MAIN.VCX Цитата:Вот этого делать не надо. Я показал тебе где суть дела происходит. Для запуска формы из другой формы используй метод 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 |
Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
urfin
Для глобального поиска по проекту удобно использовать пункт меню "Tools\Code References" среды разработки VFP9. Спасибо, учусь пользоваться. Еще вопросы. Почему в качестве базовых классов для основных рабочих модулей (menu,task,event и др.) выбрана форма? Даже goApp является формой. Почему не использован невизуальный класс (custom)? С первого взгляда кажется логичнее создать невизуальный goApp, затем вызвать форму main для регистрации пользователя, а позднее по возвращенному ею значению принимать решение на запуск программы (выполнить запуск основных свойств-обьектов, тех что сейчас находятся в методе goApp.pgfMain.Start) или выход из программы. А так получается, что форма регистрации остается болтаться в памяти, потому что она одновременно еще является ядром системы (типа вахтер - он же владелец предприятия). |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Цитата: Одна из идей фрэймворка : Данные и публичные методы работы с ними отделены от множества форм представления и сконцентрированы в одном месте - невидимых формах бизнес-объектов .frmTask.DataEnvironment.Objects + frmTask.SomeMethods() Если посмотреть внимательно, все формы редактирования содержат пустой DataEnvironment! Он наполняется "на лету" из "задачной формы" frmTask в момент создания формы. см. frmComplex.DECopyAndOpen() т.е. данные и публичные методы работы с ними отделены от множества форм представления Цитата: Окно основного приложения - TopLevel форма, а не _SCREEN. Она просто обязана "болтаться в памяти" ------------------ Исправлено 1 раз(а). Последнее : urfin, 25.12.06 06:52 |
Re: Нетленка | |
---|---|
urfin Автор Сообщений: 328 Дата регистрации: 17.08.2004 |
Цитата: 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 |
Re: Нетленка | |
---|---|
Dag Сообщений: 1156 Дата регистрации: 08.02.2006 |
urfin
С Новым Годом! Забежал сюда спросить про обещанную новую версию - а подарочек-то уже под новогодней елкой! Спасибо! |
© 2000-2024 Fox Club  |