|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
На форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii), конечно можно добавить описание и создание грида и в метод и после команды Cursоrfill, если грид простой, но на нём понавешано всяких чёртовых функций расчёта...поэтому просто так не получается...как вариант чёртовы классы, описывать всё руками в PRg-шке долго и нудно, конечно можно записать форму как класс, а нельзя ли такой же фокус сделать с гридом, только без формы...т.е. из Form Designer, только грид записать как класс...без формы.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:10 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
File - Save as Class - Selected controls (дальше сам разберешься) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:19 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
автортолько грид записать как класс...без формы используют такие приемы: 1. создают класс-форму + грид у грида создают методы видоизменения и управляют какими-то свойствами (т.е. кладут гриду или строку с информацией как взлететь, или он берет эту информацию у какого -то объекта) т.е. видоизменение производят во время выполнения 2. создают класс-форму + грид от нее делают наследника и визуально трогают у грида колонки и что-то у формы и сохраняют именно класс-форму в библиотеку и поднимают именно класс-форму сразу с уже переделанным гридом хранение только видоизмененного грида приведет к тому, что Вы не будете видеть собранных вместе форму + грид в дизайнере или прийдется создавать какой-то хитрый свой дизайнер, который в нужное время будет подсовывать в форму грид и затем только его сохранять назад в библиотеку. я советую все-же не выдергивать грид, а хранить его на форме вместе с самой формой в библиотеке. применение процедур (отказ от визуальных библиотек) усложнит разработку и увеличит трудозатраты. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:38 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
для информации пример наследования класс-формы с видоизменением с помощью создания строки-настройки можете подсмотреть метод взлета грида и чтения строки-настройки (возможно будет интересно) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:40 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
ННовичокНа форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii), конечно можно добавить описание и создание грида и в метод и после команды Cursоrfill, если грид простой, но на нём понавешано всяких чёртовых функций расчёта...поэтому просто так не получается...как вариант чёртовы классы, описывать всё руками в PRg-шке долго и нудно, конечно можно записать форму как класс, а нельзя ли такой же фокус сделать с гридом, только без формы...т.е. из Form Designer, только грид записать как класс...без формы.. Может я, конечно, лезу не в свое дело. И/или не разобрался в сути вопроса. А нельзя перед CursorFill() сбрасывать RecordSource грида, а затем обратно восстанавливать? Причем, это можно оформить в виде процедур базового класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:51 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
Form Designer не предусмотрен, не создавался для сохранения отдельных настроенных на форме объектов, однако имеется возможность создание собственных билдеров или изменение существующих (проекты с исходными кодами билдеров имеются в поставке фокспро) т.е. его поведение разработчиками виз.среды описывалось строго под поставленный алгоритм и задачи - создать/изменять форму, готовую для запуска в приложении командой do form. Form Designer это наследие младших версий фокспро, которое разработчикам приходилось так-же дорабатывать и в старших версиях. поэтому некоторый стиль разработки (ООП), который появился в старших версиях + некоторые приемы, которые стали применяться не предусматривает(ют) использование этого инструмента по некоторым причинам. Основная причина - это то, что форма - это контейнер с заранее предусмотренным алгоритмом поведения и набором объектов, что часто бывает неудобным при попытке создания библиотек собственных классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 12:58 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
авторА нельзя перед CursorFill() сбрасывать RecordSource грида, а затем обратно восстанавливать? если я правильно понимаю задавшего вопрос, то у него нет проблемы привязки контрола к источнику у него проблема в видоизменении этого объекта на форме + он смешал в коде еще и бизнес (выполняет какие-то рассчеты), что также можно решить методом вынесения бизнеса из класса грида в отдельные сущности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:01 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
прошелмимоForm Designer не предусмотрен, не создавался для сохранения отдельных настроенных на форме объектов Смотрите мой пост выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:01 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
авторСмотрите мой пост выше. авторхранение только видоизмененного грида приведет к тому, что Вы не будете видеть собранных вместе форму + грид в дизайнере или прийдется создавать какой-то хитрый свой дизайнер, который в нужное время будет подсовывать в форму грид и затем только его сохранять назад в библиотеку. т.е. Вы будете вынуждены забирать этот грид и поднимать его динамически во время инициализации всей формы либо также создавать в дизайнере форму+грид, для того чтобы увидеть грид+форма поэтому каких-либо выгод от хранения отдельного класса-грида я не вижу ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:07 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
ННовичокНа форме есть грид, и он постоянно перезаписывается (из-за этой чёртовой Cursоrfillii), Кроме CursorFill() есть еще и CursorRefresh(), который ничего не рушит. Изучите таки предмет подробно и многие такие вопросы отпадут сами. Еще раз - не изобретайте велосипед, он уже изобретен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:10 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
CursorFill() видимо применяется из-за динамического изменения строки ограничения запроса если именно в этом проблема, то я подскажу каким образом в JDBC использовать статичный параметр и использовать курсоррефреш ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:14 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
Спасибо, разбираюсь...сложно как-то, простым беглым просмотром не удаётся вникнуть, а скурпулюзно и методично...дефицит времени, вот и получается, Copy-Paste, конечно может это и не выход...но записав видоизменённый грид, как класс, и затем положив этот класс на форму, она вроде как работает и при zap и pack сохраняет свой вид не перепутывает столбцы.. и процедуры, которые вызывались при переходе в другую ячейку, вроде как отрабатываются... Класс Форма+грид это конечно же правильно, но это если форма создаётся с нуля, а в данный момент придётся переписывать (а это точно будет ошибка и остальные прелести) всю форму, а так вроде трудозатраты минимальны..но за примеры спасибо, буду разбираться..:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:20 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
прошелмимо, У меня справочник наименований, а когда они переходят на вторую закладку PageFrame, то там выбираются история цен этого наиманования, так что строка, которая передаются в SQL (where kod=1), всё время корректируется функцией strtran(str_viborky,"where kod=","where kod=1"), а затем cursorfill, и появляется белый грид, поэтому я и стал решать проблему через классы.., на каждой ячейки понавешаны конечно же расчёты и проверки.... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:32 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
ННовичокпрошелмимо, У меня справочник наименований, а когда они переходят на вторую закладку PageFrame, то там выбираются история цен этого наиманования, так что строка, которая передаются в SQL (where kod=1), всё время корректируется функцией strtran(str_viborky,"where kod=","where kod=1"), а затем cursorfill, и появляется белый грид, поэтому я и стал решать проблему через классы.., на каждой ячейки понавешаны конечно же расчёты и проверки.... Вот при такой постановке вопроса, я вам все-таки рекомендую посмотреть на сброс источника данных грида перед CursorFill. .RecordSource = "" MyCad.CursorFill() .RecordSource = MyCad.Alias .Column1.ControlSource = ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:48 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
Kruchinin Pahan, Да...я так и делал для простых гридов...но как Вы в .Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 13:52 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
прошелмимоавторСмотрите мой пост выше. авторхранение только видоизмененного грида приведет к тому, что Вы не будете видеть собранных вместе форму + грид в дизайнере или прийдется создавать какой-то хитрый свой дизайнер, который в нужное время будет подсовывать в форму грид и затем только его сохранять назад в библиотеку. т.е. Вы будете вынуждены забирать этот грид и поднимать его динамически во время инициализации всей формы либо также создавать в дизайнере форму+грид, для того чтобы увидеть грид+форма поэтому каких-либо выгод от хранения отдельного класса-грида я не вижу А я и не спорю. Просто в FoxPro есть и такая возможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 15:35 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
автор на каждой ячейки понавешаны конечно же расчёты и проверки авторДа...я так и делал для простых гридов...но как Вы в .Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д. бизнес не нужно писать в методы объектов грида напрямую вызов бизнес-кода необходимо звать через "обертки", т.е. создается класс-грид с классами-контролами в колонках с заготовленными методами проверки существования и выполнения методов каких-то бизнес-сущностей. если необходим пример - я нарисую, но сейчас в полнейшем цейтноте... в пятницу уезжать на сессию, у меня 15 регионов на внедрении .... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2008, 20:50 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
ННовичокKruchinin Pahan, Да...я так и делал для простых гридов...но как Вы в .Column1.txt1.valid = ... пропишите функцию какую-нибудь, типа replace col3 with col1+col2 и т.д. А как вы сейчас прописываете? Еще раз повторюсь. Если перед закрытием курсора (CursorFill) отвязать RecordSource грида, никакие методы, колонки и свойства ни одного из элементов грида слетать не будут. Ну, если хотите потренироваться с классами, наследованием, подъемом класса налету, можете поизвращаться. А если как обычно люди поступают, то пожалте сюда читать статью: Пропадают настройки Grid, события столбцов, заголовков, ячеек ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 05:58 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
прошелмимо, Вы случайно не преподователь :-), вспоминаю лекции профессоров...чё они там только не болтали...минут пять ещё понимаешь, а потом отключаешься..:-), поэтому и существовал слой семинаров, где слова этих профессоров переводили на язык студентов...:-), у вас случайно своего сайта нет, чтоб можно было методически, а не отрывочно пройти по шагам ...:-)...примеры, которые вы выкладываете(и не только для меня, спасибо)...понятны, но никак не удаётся их адаптировать под уже имеющиеся ПО, которое тянется аж с FPD(есть тут такие задачи модульного программирования, кстати и навешивание процедур на столбцы, также тянется от browse), поэтому и вырезаются куски, вставляя в модули программы(и они работают), оставляя классовый подход на задачи с нуля..:-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 07:32 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
авторВы случайно не преподователь преподаватель физики, но бросил это гиблое дело после года преподавания. гы, преподавал в фамильной деревне, дети бегали и рабовались: "барин вернулся", очень любили, девушки писали записки ..., шучу. авторно никак не удаётся их адаптировать под уже имеющиеся ПО, которое тянется аж с FPD скорее всего проблемы в архитектуре, автороставляя классовый подход на задачи с нуля иногда трудозатраты по сопровождению превышают трудозатраты на переработку существующего (рефакторинг), поэтому если есть модель, которая демонстрирует значительный выигрыш (трудозатраты, скорость разработки, себестоимость, более стабильная работа...), то стоит задуматься над этим, т.е. понести эти самые трудозатраты и переделать, то что необходимо. авторкстати и навешивание процедур на столбцы такие методы я могу продемонстрировать, но каким образом можно проверить валидность данных: - либо со стороны клиента (клиентом, кодом фокспро) - со стороны сервера (контроль целостности данных) аналогично и посчитать что-то мы можем либо на клиенте, либо на стороне сервера проверки и расчеты можем выполнять либо в момент ввода данных, либо в момент попытки сохранения при использовании буферизации. чаще всего в реальных приложениях применяются оба способа в совокупности в момент заполенения данных в гриде можно выполнять проверки и для того, чтобы не писать эти проверки непосредственно в методы объектов грида, либо самого грида можно поступить некоторыми способами: 1. самый "тупой"(извиняюсь), из виданных мной - это присвоение объекту св-ва - имени выполняемого модуля (выполняемой строки) и далее выполнение этой строки макроподстановкой в каком-то методе, т.е. при разработке в класс пишем стандартный метод, который у наследников никогда не меняем, этот код содержит только анализ существования строки, которую нужно выполнить и вслучае необходимости макроподстановкой ее выполняет (у наследников-объектов нам просто необходимо менять такую строку-настройку) 2. более сложный и правильный способ. Создается для каждого случая класс - безнессущность, который содержит описание обработки событий для всех контролов, которые его зовут. Для каждого случая поднимается свой объект бизнессущность. У грида и его объектов на стадии разработки класса пишутся стандартные методы, которые передают эти объекты в бизнессущность. Т.е. для того, чтобы видоизменять поведение форм и грида (считать, моргать) необходимо будет изменять только класс-бизнессущность, а в сам грид и форму ничего не вносится, только информация какую бизнессущность использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 09:30 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
Kruchinin Pahan, Если я эту задачу перепишу на классы, хрен кто тогда в ней разберётся....и я могу спокойно работать, не боясь сокращений :-)))))))))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 13:05 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
ННовичокKruchinin Pahan, Если я эту задачу перепишу на классы, хрен кто тогда в ней разберётся....и я могу спокойно работать, не боясь сокращений :-)))))))))))))) Согласен. В нынешних условиях данный подход также имеет право на жизнь. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 13:37 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
авторЕсли я эту задачу перепишу на классы обратите внимание на разработки из поставки фокспро + проект vfpx. как Вы думаете, почему разработчики выбрали для разработки приемы ООП? наверное не только для того, чтобы в этом никто не разобрался. автор....и я могу спокойно работать да, потому что освоите новые приемы, будете больше размышлять ... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 13:42 |
|
Перенести грид из формы в класс
|
|||
---|---|---|---|
#18+
Kruchinin Pahan, Кстати я уже писал, что методы при отвязки и привязки ControlSorce не работают (достаточно проверить .Column2.text1.valid=messagebox() ) поэтому и крутишься тут, кстати записал этот грид как класс, убрал с формы и вставил этот класс, та же фигня, придётся как в анекдоте про аленький цветочек(...Хорошо, пойдем по длинному пути...Тогда расскажи мне, батюшка, про классы нестандартные !) :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2008, 14:20 |
|
|
start [/forum/topic.php?fid=41&fpage=140&tid=1586976]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
15ms |
get forum data: |
2ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 202ms |
0 / 0 |