:: Visual Foxpro, Foxpro for DOS
Re: Научите работать с Data Environment
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Вообще так по мелочам - много чего, если бы немного доработать - могло бы сегодня сделать фокспро едва ли не самым удобным средством разработки.
Вот скажем недавно взялся перелопатить один сам-для-себя проектик на лазарусе, и как же оно раздражало со всеми этими паскальными сложностями визуализации объектов, которые на фоксе, как бы оно странно ни прозвучало, были реализованы намного удобнее! Несмотря на всю уже моральную устарелость собственно VFP9. Т.е. как раз по мыслям - в древнем как бы по своей сути фоксе разные задумки были намного более удобные для программиста. Нежели во всех этих "современных" иных средах.
Как и сама структура языка - изначально гениальная. В отличие от всех прочих. Причем, самое удивительное - даже в отношении набрасывания визуального интерфейса!
Еще бы ему добавить чуть больше встроенных возможностей по более углубленной работе с графикой, вообще было бы просто таки супер.
Т.е. фокспро - намного более высокого уровня язык получается. При достаточной все еще компактности. Что для многих нужд - намного более удобно. Нежели закапываться в мелочах, как в сишных и прочих моделях именно с визуальным интерфейсом.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 2 раз(а). Последнее : Crispy, 14.09.20 09:05
Ratings: 0 negative/1 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Crispy
Igor Korolyov
По мнению разработчиков всё же более подходит для создания источников данных метод Load

Увы, тоже не совсем удачное для этого место. Из-за несколько странной реализации этого метода собственно в фокспро.
Когда-то давно, перебирая все загружаемые поочерредно методы, я обнаружил самое подходящее для создания источников - как раз таки в DE - в методе BeforeOpenTables. Который возможно единственный и имеет смысл использовать даже и без использования прочих возможностей DE, предлагаемых разработчиками.
Именно в этом методе скажем созданный курсор отлично затем цепляется к чему угодно - скажем без проблем становясь источником хоть того же грида.
Заполнять его разумеется можно и после - например в том же Init грида, что в принципе смотрится достаточно логично, ну можно и формы, если уж есть такая необходимость по какой-то причине.
В целом же, как мне кажется, все проблемы DE - из-за недоработки его на этапе последней их версии.

Можно еще добавить, что DE и объекты Cursor имеют свои Init-ы.

Откуда-то сохранился чей-то порядок загрузки формы:
DATAENVIRONMENT.OPENTABLES
DATAENVIRONMENT.BEFOREOPENTABLES
FORM.LOAD
INIT FOR EACH CURSOR IN the DATAENVIRONMENT
DATAENVIRONMENT.INIT
INIT FOR EACH CONTROL IN the FORM
FORM.INIT
FORM.SHOW
FORM.ACTIVATE
FORM.REFRESH
WHEN FOR 1st CONTROL IN TABORDER
GOTFOCUS FOR 1st CONTROL IN TABORDER (IF it has one)
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
LUCIAN
Автор

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
Шутенко где то предлагал в Load формы вставлять такой код:
This.DataEnvironment.CloseTables
Local lni, loDEObject, lcCurrentDBCPath, lcNewDatabasePropValue
lcCurrentDBCPath=SYS(5)+SYS(2003)+'\'
For lni=1 To This.DataEnvironment.Objects.Count
loDEObject=This.DataEnvironment.Objects(lni)
If loDEObject.BaseClass=="Cursor"
If PEMSTATUS(loDEObject,"Database",0)
If Upper(Addbs(Justpath(loDEObject.Database)))!=Upper(lcCurrentDBCPath)
lcNewDatabasePropValue = ;
Strtran(;
loDEObject.Database,;
Addbs(Justpath(loDEObject.Database)),;
lcCurrentDBCPath;
)
loDEObject.Database=lcNewDatabasePropValue
*!* Wait ;
*!* loDEObject.Name + ;
*!* [ is member of ]+;
*!* loDEObject.Database ;
*!* Window Timeout 2
Endif
Else && here i deal with a free table
If Upper(Addbs(Justpath(loDEObject.CursorSource)))!=Upper(lcCurrentDBCPath)
lcNewCursorSourcePropValue = ;
Strtran(;
loDEObject.CursorSource,;
Addbs(Justpath(loDEObject.CursorSource)),;
lcCurrentDBCPath;
)
loDEObject.CursorSource=lcNewCursorSourcePropValue
Endif
Endif
Endif
Endfor
This.DataEnvironment.OpenTables
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
Увы, тоже не совсем удачное для этого место. Из-за несколько странной реализации этого метода собственно в фокспро.
Когда-то давно, перебирая все загружаемые поочерредно методы, я обнаружил самое подходящее для создания источников - как раз таки в DE - в методе BeforeOpenTables. Который возможно единственный и имеет смысл использовать даже и без использования прочих возможностей DE, предлагаемых разработчиками.
Этот метод имеет смысл использовать только если используется сам DE - и как раз для "настройки" объектов в DE расположенных (обычно ограничиваются путями к таблицам/базам). Метод Load формы хоть и работает после данного, но до того как происходит "привязка" элементов управления к своим источникам данных - поэтому нет ни единой проблемы всю подготовку источников данных делать в Load. Есть лишь проблема в "заполнении" этих источников, т.к. зачастую для заполнения нужно знать какие параметры переданы извне в форму, а их, увы, можно получить только в Init самой формы - что уже слишком поздно для нормального открытия куросров, выполнения запросов и.т.д.
Если DE не используется (там нет объектов-курсоров), то и смысла в DE.BeforeOpenTables нет никакого.

LUCIAN
Шутенко где то предлагал в Load формы вставлять такой код:
Это требует отключения "автооткрытия" курсоров в DE (т.к. если курсор уже открыт, то поменять его CursorSource/Database не получится, да и бессмысленно). А сделать это при помощи суюклассирования нельзя. Т.е. настройку нужно производить для каждой scx формы в проекте отдельно. Да, в принципе можно делать эту програмно - даже несколько вариантов есть, но это всё уровень "мастеров приложения/построителей/генераторов-модификаторов кода" - для среднего/малого размера проектов это выглядело явным перебором. Кстати, если уж заморачиваться на построители/генераторы, то не проблема просто прописывать этот самый код в DE.BeforeOpenTables.
Лично я пользовался недокументировнным багом/фичей, которая позволяла "волшебным образом" заставить все пустые DE.BeforeOpenTables в проекте исполнять мой код. Т.е. через зад но сделал нечто типа "субклассирования DE".
Впрочем, для многих применений вообще не требуется шаманитиь с этими самыми путями к таблицам - можно обойтись тупым автоматическим поиском dbf в Default папке или по SET PATH - для малых/средних проектов это нормальный вариант (главное на время разработки использовать сугубо локальную копию таблиц/БД, чтобы в DE не прописывались абсолютные пути к файлам).


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.
Ratings: 3 negative/1 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Логика домохозяйки - при проблемах с DE раскрасить нужно пост lulgu.
Ratings: 2 negative/1 positive
Re: Научите работать с Data Environment
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Закладки, чтобы долго не искать
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
Закладки, чтобы долго не искать

С такими метками мимо поста поневоле не проскочишь.
Ratings: 2 negative/1 positive
Re: Научите работать с Data Environment
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
lulgu
Логика домохозяйки - при проблемах с DE раскрасить нужно пост lulgu.
Просто с luglu дискутировать неинтересно. У неё аргументация бабкина.
Поэтому и красят, когда очередную чушь сморозит.
Ratings: 0 negative/2 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Еще один художник, проснулся.
Хоть бы разок хоть что-то путное услужил.
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
pasha_usue
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.

Сам-то хоть понял, что написал?
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
lulgu
У каждого свой DE.
У кого-то инструмент для домохозяек, у кого-то - для работы своя версия.

Посильно почистил карму. Но мало.


------------------
"Veni, vidi, vici!"(с)
Ratings: 2 negative/0 positive
Re: Научите работать с Data Environment
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
pasha_usue
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Остальное в поиске по "BeforeOpenTables".
И нахера? С native ďatabase ещё ничего, а с external - никак.

Пашка, подбирай выражения. Ты же на основном форуме.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
lulgu
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.

Одно другому не помеха. На универсальных формах через инит и передаю, где надо перекрою по NODEFAULT, и глобальный класс есть.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
sphinx
lulgu
А в чем собственно проблема с DE, или без писанины с USE старперам некомфортно что-ли?
С этой известной ИК-проблемой передачи параметров через INIT - заведите глобальный объект goPublic класса EMPTY и храните в нем хоть тыщу своих параметров как свойства.
С субклассированием DE и прочее - заведите объект класса CUSTOM и обращайтесь к нему из DE.

Одно другому не помеха. На универсальных формах через инит и передаю, где надо перекрою по NODEFAULT, и глобальный класс есть.

Конечно, надо иметь здравый смысл - ничего друг друга взаимно не исключает.
Про карму - я давно знаю, что эти художники не программисты.
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
По ссылке про DE:
Цитата:
Правда, для начинающих надо отметить следующее:
1. Пути к свободным таблицам и к базам (пути к таблицам, входящим в базу храняться в базе) жестко задаются при разработке.

Это что ли в тексте программы прописываются? Вроде здравомыслящие всегда используют какой-то файл настроек - DBF, TXT (INI), XML и пр. Или как-то еще "жестко" можно задать?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Кто бы сейчас спросил ХелаРайсера использует ли он DE
В свое время тоже задавалась этим вопросом и хотела использовать DE в приложении, на что piva сказал - забудь. С тех пор этим вопросом и не задавалась.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 3 раз(а). Последнее : Божья_коровка, 19.09.20 15:45
Ratings: 0 negative/0 positive
Re: Научите работать с Data Environment
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Божья_коровка
lulgu
По DE основное обозначено аж восемнадцать лет назад, когда знатоков местного разлива еще в проекте не было:
forum.foxclub.ru
Кто бы сейчас спросил ХелаРайсера использует ли он DE
В свое время тоже задавалась этим вопросом и хотела использовать DE в приложении, на что piva сказал - забудь. С тех пор этим вопросом и не задавалась.

Так ведь никто не заставляет.
Но на форуме свою точку зрения все-таки надо уметь хоть как-то аргументировать.
Но здесь, когда Главные асы форума ищут DE то в классах, то в Database, то в среде домохозяек, попутно устраивая срач, то это нехорошо.
Или, упомянутое субклассирование без конкретного примера просто вброс ни о чем, только чтобы потрындеть для важности.
Ratings: 0 negative/0 positive


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

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

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