|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Как видите, вы сами подробно и в детялях подтверждаете то что сами и отрицаете - вы все делаете в формах. И даже удивляетесь - зачем вам нужны классы. Фактически это не ООП, без него вы обходитесь - разве что частично используете некоторые его удобные вам моменты с формами. Но VFP9 заточено под объектно-ориентированное программирование. Класс формы не класс? Изумительное измышление ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima T, ТС уже показал, "как надо", или всё ещё только критикует? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
tanglirDima T, ТС уже показал, "как надо", или всё ещё только критикует? Он похоже еще не до конца определился "как не надо" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 13:41 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12можно ведь еще вызывать и класс формы и динамически добавлять/убирать хотя бы тот же Control. А что мешает это делать в форме созданной на основе этого класса формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:05 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
AndreTMsg12Попробуйте начать хоть что-то добавлять даже готовенькое и ваши трудом отлаженные кодохранилища начнут опухать.А кто сказал, что элементы форм - это объекты базовых классов? Вроде бы общепринятая практика (у тех, кто действительно программировал на VFP) - в первую очередь сделать свой набор объектов. А вы тут им рассказываете, что они ООП не пользуют... Прочтите еще раз внимательно его описания, многое вначале темы - там нет даже упоминаний о классах и наборах объектов, разве что где мимоходом. Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Он даже удивляется - зачем они? Единственный класс, которым он оперирует - это класс форм, где все и происходит - своеобразная форма процедурного программирования, но это не ООП. А то, что местами используется, погоды не делает. ДимаТ. Ничто вам не мешает так делать, если вам так хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 14:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 20:31 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12С числовыми полями порой красиво смотрятся маленькие калькуляторы, в полях типа дата - календарики. Убил бы! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 21:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12Хотя с этого и надо начинать описания, т.к. там все происходит - в событиях, методах, свойствах объектов. Ну так мы тут уже заждались (попкорном обжравшись) когда нам лекцию прочитает товарищ "я знаю как правильно делать", или это сокращение от "я знаю как правильно делать, но не умею потому что никогда не делал" ? Вы удивитесь, но лекции по ООП в VFP9 есть готовые и они вполне доступны. Лекции на русском языке, неплохо переведены. Находятся они в HELP, вместе с описаниями учебных примеров. Изучайте на здоровье. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:17 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. Это сколько же бессмысленного труда потрачено ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima TНа все типовые случаи есть готовый класс формы, в котором все прописано, остается только нужные свойства донастроить. Это сколько же бессмысленного труда потрачено ... Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 15:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12пропущено... Это сколько же бессмысленного труда потрачено ... Не переживай. Пять лет назад закончил писать и больше не возвращаюсь к этому вопросу. Только пользуюсь. Ого, пять лет! Плюс еще года два, как в сундук, в форму все подряд запихивали что влезало. Какая тут к черту модернизация, нафиг она нужна - интересно даже взглянуть на такой шедевр. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 19:30 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12 интересно даже взглянуть на такой шедевр. Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:09 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tthunder2Теперь меняем тип столбца таблицы с Charater на, например, Numeric или с Charater на Memo (столбец, естественно, редактируется в нашей форме). Что произойдёт в форме ? Как она отреагирует ? Если поменять тип поля то ничего криминального в форме не случится. Текстбоксу без разницы какой тип поля ему достался. Гриду тоже. Другое дело код где это поле используется, его весь перелопатить придется. По-хорошему о типе поля надо думать на этапе проектирования. Я венгерскую нотацию использую. Первый символ в названии поля - тип, поэтому при смене типа изменится имя поля. Исключение разве что изменение размера символьного поля. Тут текстбокс надо поправить (.MaxLenght) thunder2Второй вопрос: в нашу таблицу мы добавили столбец. Что мне надо сделать чтобы предоставить возможность редактирования значения этого столбца в форме (столбец имеет скалярный тип данных) ? Спасибо заранее. Открыть DE, вытащить поле мышкой на форму, сменить label.caption и порядок обхода записей поправить. Если используется курсор-адаптер - сначала поправить его. Стандартные механизмы фокса. Все быстро, легко и просто. Ничего самопального тут я не изобретал. Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:27 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
thunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? В форме. Буферизация и TableUpdate() для сохранения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:35 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Дополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 21:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Код класса покажи, ... для файл-сервераидля клиент-сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 22:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tthunder2Ок. А после внесения изменений в контролах какой код выполняет сохранение ? Код формы или ... ? В форме. Буферизация и TableUpdate() для сохранения. Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 00:38 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12 интересно даже взглянуть на такой шедевр. Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:32 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Это можно. Таблицы ведь могут обновляться не только из ваших форм, но и из других мест (автообновление, интернет, другая программа, триггеры, toolbar и т.д.). В таких случаях вы где создаете свои кодохранилища? К примеру, объясните своему ученику, как ваше TABLEUPDATE() в его "класс модели" нужно перетаскивать... мышкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 13:33 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistDima TДополню (предвидя опусы от sg12) TableUbdate() написан в классе формы правки. Код класса покажи, ... для файл-сервераидля клиент-сервера. Выше написал - не хочу выкладывать. Без подробных объяснений понимать сложно будет. Спрашивай чего конкретно интересует. Сразу предупрежу - ничего особо экзотического я не изобрел. Все что можно было сделать просто - сделано просто. TableUbdate() для обоих вариантов один и тот же: clsFormEdit.Save() Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
thunder2Вооот, наконец-то добрался до главного ! Я такую логику переношу в класс модели, форма же имеет ссылку на объект модели и просто вызывает нужные методы в нужный момент, т.е. я применяют шаблон MVC. Как такое решение ? MVC это один из подходов к разработке, сам по себе он ни плох, ни хорош. Все зависит от конкретной реализации. Я бы даже сказал от общей идеологии разработки, которая включает в себя в т.ч. подход к проектированию БД. Пробовал что-то подобное, но потом отказался от такого подхода, т.к. лично мне принципиально максимально вынести контроль целостности на уровень БД (связи, триггеры и т.п.), чтобы БД не была привязана к конкретному приложению. Поэтому на уровне приложения остается только сохранить и проверить на ошибки. Поэтому в большинстве случаев надобности нет в излишних классах (писать туда нечего). Классы типа "контроллеров" нужны в случаях какой-то сложной логики, которую в БД не вынести, но с ними в каждом случае все индивидуально, поэтому нет смысла выносить их в какой-то глобальный класс на все случаи жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:21 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Смысл? Все равно ничего не поймешь. Куча абстрактного кода и макроподстановок. Некоторые места я сам уже не помню зачем написаны, но раз написано - значит надо. Документацию я делать не собираюсь, нет ни желания, ни времени. Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? Даже не знаю чего и сказать на этот бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:23 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Как много умных слов - и какой идиотский вопрос :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 14:55 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima TPaulWistпропущено... Код класса покажи, ... для файл-сервера и для клиент-сервера. Выше написал - не хочу выкладывать. Без подробных объяснений понимать сложно будет. Спрашивай чего конкретно интересует. Сразу предупрежу - ничего особо экзотического я не изобрел. Все что можно было сделать просто - сделано просто. TableUbdate() для обоих вариантов один и тот же: ОК, мне схема интересна :) Код: sql 1. 2.
Ну давай по порядку, вопросы (пока смотрим файл-сервер): 1. Где начинается и заканчивается транзакция, в каком месте класса-формы? 2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов? 3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера? 4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 16:04 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
Dima Tsg12пропущено... Понятно. Если уж за пять лет вы сами не смогли разобраться, что где нагородили ... Вопрос вам: Неужто за восемь лет вы только сейчас узнали о существовании в VFP9 других классов, кроме класса форм? Даже не знаю чего и сказать на этот бред. Почему же бред? Пока из ООП вы демонстрируете некоторое знакомство только с несколькими объектами, которые научились перетаскивать мышкой на форму. А формы перегоняете в классы с помощью "SAVE AS ..." И только сейчас начали узнавать, что в VFP можно создавать свои классы и собирать их в библиотеки классов, и еще многое чего такого. Даже на уровне кнопок вы плаваете с их заполнением. Не говоря уже о невизуальных классах, которые оставят в ваших учебно-тестовых формах одни картинки. Апломбу у вас хватает, но вы тут же тушуетесь, когда доходит до конкретики. Для нормального освоения ООП вам понадобится года полтора. Если же выложите свои классы, то дело пойдет быстрее - этак страниц на пятьдесят. К заданным вопросам по-порядку можно будет добавлять новые номера, с разрешения инициатора. И на форуме станет веселее - и развлечение, и обучение. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 17:18 |
|
Общие принципы построения приложения в FoxPro
|
|||
---|---|---|---|
#18+
PaulWistНу давай по порядку, вопросы (пока смотрим файл-сервер): Заточка изначальная была под КА для работы с MSSQL. PaulWist1. Где начинается и заканчивается транзакция, в каком месте класса-формы? С том случае нет транзакций. Оптимистическая буферизация. Buffering = 3 PaulWist2. Как и где происходит присвоение thisform.cTable, а если таблиц больше чем одна, как в thisform.cTable попадают имена алиасов? 3. Где "готовятся" сами данные, например для связки Мастер-Детали, те в каком месте в деталях присваивается PK Мастера? То что я выше показывал это код формы правки справочника, т.е. одной записи одной таблицы. Для документа с табличной частью другая форма (clsFormDocEdit), унаследованная от этой. По сути та же правка записи только вместе с ссылающимися на нее из дочерней таблицы. Там добавлен курсор-адаптер для дочерней thisform.cChildTable (Buffering = 5) и метод Save() перепрописан. Там в транзакцию обернуто внутри Save(). Для MSSQL SQLEXEC('begin tran') В родительской nМастерID появляется после сохранения. Для MS SQL "select @@IDENTITY" В процессе ввода при добавлении записей в дочернюю в nМастерID ничего не пишется. В процессе сохранения заменяется на Мастер.nМастерID clsFormDocEdit.Save() Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
в твоем примере: cTable = 'Мастер' cIDfield = 'nМастерID' cChildTable = 'Деталь' PaulWist4. Правильно ли я понимаю, что с фоксовские ХП для сохранения данных ты не используешь, а если используешь, то как в них передаешь код сохранения метода clsFormEdit.Save(), что бы сохранить данные. ХП ни фоксовые ни MSSQL я не использую для простых сохранений. Просто пишу в таблицу, если что-то надо попутно менять, то это прописываю в триггерах БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2013, 18:07 |
|
|
start [/forum/topic.php?fid=41&msg=38149377&tid=1583148]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 165ms |
0 / 0 |