powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перенести грид из формы в класс
25 сообщений из 32, страница 1 из 2
Перенести грид из формы в класс
    #35702176
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii), конечно можно добавить описание и создание грида и в метод и после команды Cursоrfill, если грид простой, но на нём понавешано всяких чёртовых функций расчёта...поэтому просто так не получается...как вариант чёртовы классы, описывать всё руками в PRg-шке долго и нудно, конечно можно записать форму как класс, а нельзя ли такой же фокус сделать с гридом, только без формы...т.е. из Form Designer, только грид записать как класс...без формы..
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702212
Fffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
File - Save as Class - Selected controls (дальше сам разберешься)
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702292
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортолько грид записать как класс...без формы

используют такие приемы:
1. создают класс-форму + грид
у грида создают методы видоизменения и управляют какими-то
свойствами (т.е. кладут гриду или строку с информацией как взлететь,
или он берет эту информацию у какого -то объекта)
т.е. видоизменение производят во время выполнения
2. создают класс-форму + грид
от нее делают наследника и визуально трогают у грида колонки
и что-то у формы и сохраняют именно класс-форму в библиотеку
и поднимают именно класс-форму сразу с уже переделанным гридом

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

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

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

можете подсмотреть метод взлета грида и чтения строки-настройки
(возможно будет интересно)
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702357
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ННовичокНа форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii), конечно можно добавить описание и создание грида и в метод и после команды Cursоrfill, если грид простой, но на нём понавешано всяких чёртовых функций расчёта...поэтому просто так не получается...как вариант чёртовы классы, описывать всё руками в PRg-шке долго и нудно, конечно можно записать форму как класс, а нельзя ли такой же фокус сделать с гридом, только без формы...т.е. из Form Designer, только грид записать как класс...без формы..
Может я, конечно, лезу не в свое дело. И/или не разобрался в сути вопроса. А нельзя перед CursorFill() сбрасывать RecordSource грида, а затем обратно восстанавливать?

Причем, это можно оформить в виде процедур базового класса.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702382
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Form Designer
не предусмотрен, не создавался для сохранения отдельных
настроенных на форме объектов, однако имеется возможность
создание собственных билдеров или изменение существующих
(проекты с исходными кодами билдеров имеются в поставке фокспро)
т.е. его поведение разработчиками виз.среды описывалось
строго под поставленный алгоритм и задачи - создать/изменять форму,
готовую для запуска в приложении командой do form.

Form Designer
это наследие младших версий фокспро,
которое разработчикам приходилось так-же дорабатывать
и в старших версиях.
поэтому некоторый стиль разработки (ООП), который появился в старших версиях +
некоторые приемы, которые стали применяться не предусматривает(ют) использование этого инструмента по некоторым причинам.

Основная причина - это то, что форма - это контейнер с заранее предусмотренным
алгоритмом поведения и набором объектов,
что часто бывает неудобным при попытке создания библиотек собственных классов.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702390
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА нельзя перед CursorFill() сбрасывать RecordSource грида, а затем обратно восстанавливать?

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

у него проблема в видоизменении этого объекта на форме +
он смешал в коде еще и бизнес (выполняет какие-то рассчеты),
что также можно решить методом вынесения бизнеса из класса грида в
отдельные сущности.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702396
прошелмимоForm Designer
не предусмотрен, не создавался для сохранения отдельных
настроенных на форме объектов

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

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

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

поэтому каких-либо выгод от хранения отдельного класса-грида я не вижу
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702444
ННовичокНа форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii),
Кроме CursorFill() есть еще и CursorRefresh(), который ничего не рушит. Изучите таки предмет подробно и многие такие вопросы отпадут сами. Еще раз - не изобретайте велосипед, он уже изобретен.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702464
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CursorFill() видимо применяется из-за динамического изменения строки ограничения запроса

если именно в этом проблема, то я подскажу каким образом в JDBC
использовать статичный параметр и использовать курсоррефреш
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702490
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, разбираюсь...сложно как-то, простым беглым просмотром не удаётся вникнуть, а скурпулюзно и методично...дефицит времени, вот и получается, Copy-Paste, конечно может это и не выход...но записав видоизменённый грид, как класс, и затем положив этот класс на форму, она вроде как работает и при zap и pack сохраняет свой вид не перепутывает столбцы.. и процедуры, которые вызывались при переходе в другую ячейку, вроде как отрабатываются...
Класс Форма+грид это конечно же правильно, но это если форма создаётся с нуля, а в данный момент придётся переписывать (а это точно будет ошибка и остальные прелести) всю форму, а так вроде трудозатраты минимальны..но за примеры спасибо, буду разбираться..:-)
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702525
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,

У меня справочник наименований, а когда они переходят на вторую закладку PageFrame, то там выбираются история цен этого наиманования, так что строка, которая передаются в SQL (where kod=1), всё время корректируется функцией strtran(str_viborky,"where kod=","where kod=1"), а затем cursorfill, и появляется белый грид, поэтому я и стал решать проблему через классы.., на каждой ячейки понавешаны конечно же расчёты и проверки....
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702577
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ННовичокпрошелмимо,

У меня справочник наименований, а когда они переходят на вторую закладку PageFrame, то там выбираются история цен этого наиманования, так что строка, которая передаются в SQL (where kod=1), всё время корректируется функцией strtran(str_viborky,"where kod=","where kod=1"), а затем cursorfill, и появляется белый грид, поэтому я и стал решать проблему через классы.., на каждой ячейки понавешаны конечно же расчёты и проверки....

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

.RecordSource = ""
MyCad.CursorFill()
.RecordSource = MyCad.Alias
.Column1.ControlSource = ...
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35702591
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin Pahan,

Да...я так и делал для простых гридов...но как Вы в
.Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35703028
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимоавторСмотрите мой пост выше.

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

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

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

А я и не спорю. Просто в FoxPro есть и такая возможность.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35703917
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор на каждой ячейки понавешаны конечно же расчёты и проверки

авторДа...я так и делал для простых гридов...но как Вы в
.Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д.

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

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

Да...я так и делал для простых гридов...но как Вы в
.Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д.
А как вы сейчас прописываете?
Еще раз повторюсь. Если перед закрытием курсора (CursorFill) отвязать RecordSource грида, никакие методы, колонки и свойства ни одного из элементов грида слетать не будут.

Ну, если хотите потренироваться с классами, наследованием, подъемом класса налету, можете поизвращаться.

А если как обычно люди поступают, то пожалте сюда читать статью:
Пропадают настройки Grid, события столбцов, заголовков, ячеек
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35704343
прошелмимо,

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

преподаватель физики, но бросил это гиблое дело после года преподавания.
гы, преподавал в фамильной деревне, дети бегали и рабовались: "барин вернулся",
очень любили, девушки писали записки ..., шучу.

авторно никак не удаётся их адаптировать под уже имеющиеся ПО, которое тянется аж с FPD
скорее всего проблемы в архитектуре,
автороставляя классовый подход на задачи с нуля
иногда трудозатраты по сопровождению превышают трудозатраты на переработку существующего
(рефакторинг), поэтому если есть модель, которая демонстрирует значительный выигрыш
(трудозатраты, скорость разработки, себестоимость, более стабильная работа...),
то стоит задуматься над этим, т.е. понести эти самые трудозатраты и переделать, то
что необходимо.

авторкстати и навешивание процедур на столбцы
такие методы я могу продемонстрировать, но

каким образом можно проверить валидность данных:
- либо со стороны клиента (клиентом, кодом фокспро)
- со стороны сервера (контроль целостности данных)

аналогично и посчитать что-то мы можем либо на клиенте, либо на стороне сервера

проверки и расчеты можем выполнять либо в момент ввода данных,
либо в момент попытки сохранения при использовании буферизации.

чаще всего в реальных приложениях применяются оба способа в совокупности

в момент заполенения данных в гриде можно выполнять проверки и для того,
чтобы не писать эти проверки непосредственно в методы объектов грида, либо самого грида
можно поступить некоторыми способами:
1. самый "тупой"(извиняюсь), из виданных мной - это присвоение объекту св-ва - имени
выполняемого модуля (выполняемой строки) и далее выполнение этой строки макроподстановкой
в каком-то методе, т.е. при разработке в класс пишем стандартный метод, который у наследников
никогда не меняем, этот код содержит только анализ существования строки, которую нужно выполнить и вслучае необходимости макроподстановкой ее выполняет (у наследников-объектов нам просто необходимо менять такую строку-настройку)
2. более сложный и правильный способ. Создается для каждого случая класс - безнессущность,
который содержит описание обработки событий для всех контролов, которые его зовут.
Для каждого случая поднимается свой объект бизнессущность. У грида и его объектов на стадии
разработки класса пишутся стандартные методы, которые передают эти объекты в бизнессущность. Т.е. для того, чтобы видоизменять поведение форм и грида (считать, моргать) необходимо будет изменять только класс-бизнессущность, а в сам грид и форму ничего не вносится, только информация какую бизнессущность использовать.
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35705179
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin Pahan,

Если я эту задачу перепишу на классы, хрен кто тогда в ней разберётся....и я могу спокойно работать, не боясь сокращений :-))))))))))))))
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35705290
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ННовичокKruchinin Pahan,

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

обратите внимание на разработки из поставки фокспро + проект vfpx.

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


автор....и я могу спокойно работать
да, потому что освоите новые приемы, будете больше размышлять ...
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35705446
ННовичок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin Pahan,

Кстати я уже писал, что методы при отвязки и привязки ControlSorce не работают (достаточно проверить .Column2.text1.valid=messagebox() ) поэтому и крутишься тут, кстати записал этот грид как класс, убрал с формы и вставил этот класс, та же фигня, придётся как в анекдоте про аленький цветочек(...Хорошо, пойдем по длинному пути...Тогда расскажи мне, батюшка, про классы нестандартные !) :-)))
...
Рейтинг: 0 / 0
Перенести грид из формы в класс
    #35705842
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКстати я уже писал, что методы при отвязки и привязки ControlSorce не работают
обратите внимание на пример, опровергающий данное утверждение
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перенести грид из формы в класс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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