:: Visual Foxpro, Foxpro for DOS
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
PaulWist
ZenTigra
PS.Ну допустим авто сохранения я сделаю по умолчанию, отмену по кнопке, но неужели сама идея редактирования в Grid ущербная?

1. Для простого справочника - да ущербная.

2. Как бы ты не хотел, но для каждого справочника придётся делать свой класс/форму.

Можно облегчить себе "жизнь" - это у справочников сделать идентичные поля (типа ID, Name, Comment), тогда в классе/форме надо будет только подсунуть правильное имя таблицы/ХП.

Вы же сами в пункте 2 выложили ответ, осталось сделать единый класс.



Исправлено 1 раз(а). Последнее : lulgu, 24.04.17 13:44
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
ZenTigra
Та в том то и дело, что справочников много, я уже 38 штук насчитал, и для каждого сделаны две формы, одна с Grid для выбора, а другая для редактирования, но почти все справочники чем то отличаются 2-3 полями, вот и решил попробовать их в самом Grid редактировать.

Сама по себе идея редактирования в Grid вполне здравая, если количество полей справочника не велико и легко умещается на экране без горизонтальной прокрутки.

Как вариант, можно вместо двух форм использовать одну форму с закладками. На первой закладке Grid, а на второй (третьей, четвертой и т.п.) - поля текущей строки Grid

ZenTigra
(еще нужно минимум 20 сделать, и не охота постоянно с этим возиться).

Угу. Понятное желание

ZenTigra
Вот и захотел сделать одну универсальную форму для справочников

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

Максимум, что тут можно сделать - это общий базовый класс формы. Тогда создание нового справочника - это просто создание нового класса-наследника или SCX на базе этого класса

ZenTigra
На ней разместить Grid (ReadOnly=.T., для защиты от Юзверов) и панель управления с стандартными кнопками добавить, редактировать, сохранить и отменить...
При нажатии на кнопку "редактировать" Grid переходит в режим ReadOnly=.F. и подсвечивается строка которую будут редактировать, а при попытке перейти на другую строку запрашивать о сохранении/отмене...

А что это будет неудобно?

Как бы помягче сказать... Будет ОЧЕНЬ неудобно...

Вот поставь себя на место пользователя. У тебя большое количество документов, которые надо ввести. Но, прежде, чем начать вводить надо обязательно нажать на кнопку "Редактировать".

Ну, чтобы было понятно, представь себе таблицу Excel. И прежде, чем начать редактировать одну строку надо снять с нее блокировку. Причем ты не можешь снять блокировку сразу со всего листа. Только по одной строке за раз. Прежде, чем начать редактирование следующей строки, надо вернуть блокировку измененной строки и снять блокировку у той строки, которую собираешься изменить.

ZenTigra
PS.Ну допустим авто сохранения я сделаю по умолчанию, отмену по кнопке, но неужели сама идея редактирования в Grid ущербная?

Идея вполне здравая. Способ реализации ущербный. Для простых справочников, кроме автосохранения вообще ничего не надо. Если ошибочно что-то исправят также просто все вернут на место. В особо запущенных случаях поможет ведение лога изменений. Но постоянная блокировка/разблокировка - раздражает...
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Уговорили
Форму просмотра справочников (на основе Grid) я уже сделал, она универсальная, с автоматическим добавлением нужных полей, теперь попробую что-то универсальное сделать и для формы редактирования...
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
ZenTigra
Уговорили Форму просмотра справочников (на основе Grid) я уже сделал, она универсальная, с автоматическим добавлением нужных полей, теперь попробую что-то универсальное сделать и для формы редактирования...

Конечно, попробовать нужно, в делах универсальных личный опыт - лучший учитель.
Но свои три упомянутые кнопки (Add/Save, Edit/Restore, Delete) все же не забрасывайте
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Проблема "универсальных форм" - а точнее форм строящихся на основе метаинформации (начинают с "просто перечня полей, их типов и заголовков - это же и так есть в БД") в том, что со временем объём этой метаинформации превышает все мыслимые пределы, и по сути в метаинформации оказываются все возможные свойства и даже методы которые можно прописать на форме редактирования и её элементах управления.
Тогда как сама фоксовая форма это по сути и есть набор метаинформации! Да, не самый удобный способ её вводить/изменять - ну так для этого и рисуют свои "построители" да "мастера"...

P.S. Редактировать в гриде "построчно" можно - только для простого плоского "списка чего-либо" и запросы на начало редактирования, и запрос на сохранение одной записи как правило избыточны. Выход же из режима редактирования после сохранения одной записи и вовсе ужасен - Владимир расписал "прелести" такой работы.
Такая сложная система нужна лишь для составных справочников или рабочих таблиц - где ввод идёт в кучу таблиц, а не в одну единственную. Но там весьма часто на "верхнем уровне" и так не будет грида - будет набор полей "шапки документа" (одна запись) а в гридах будут подчинённые элементы ("строки документа") - и запросов при перемещении по этим самым строкам тоже не потребуется, а между документами перемещаться - либо через внешнюю форму (где будет грид со "списком документов"), либо кнопками "[создать] следующий документ" (реже - полная навигация по списку существующих документов - т.е. не только ввод новых, но и редактирование существующих).


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Вообще, слово "универсальный" это что-то вроде пугала. И в опровержение каких только страшилок на ходу не придумают.
ООП нам только снится, да и козырнуть можно им при случае перед новичками.

UPD.
Имеется полста справочников. Понятно, среди них найдутся особые, требующие подхода - то грид широк, то штаны коротковаты, то связи потусторонние.
Но остальные, которые раз в полтора квартала разве что строчку какую просят разок подправить, эти 40-45 справочников чем провинились, за что их так.



Исправлено 1 раз(а). Последнее : lulgu, 24.04.17 17:56
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Идеей написать нечто универсальное "болеют" все начинающие программисты без исключения. С опытом это обычно проходит Точнее, приходят к разумному компромиссу

В отношении справочников - конечный объект крайне желательно иметь уникальным для данного конкретного справочника. Это может быть либо класс, либо конечная форма SCX. Но созданные только и исключительно для соответствующего справочника и ни для чего больше.

А вот иерархия классов, лежащая в основе этого конечного объекта - это уже могут быть и относительно универсальные классы, содержащие общие свойства/методы/интерфейсы соответствующих справочников
Ratings: 0 negative/1 positive
Re: Как определить что поле в Grid изменили
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Владимир Максимов
Идеей написать нечто универсальное "болеют" все начинающие программисты без исключения.

Не только программисты, и не только написать.

Рассказывают такую быль-байку. У одного знаменитого химика (фамилию вот не помню - может, Бутлеров?) был способный ученик. И вот ученик как-то говорит :
- Я мечтаю придумать универсальный растворитель!
- И в чем вы его будете хранить? - удивился Бутлеров.
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Владимир Максимов
Идеей написать нечто универсальное "болеют" все начинающие программисты без исключения. С опытом это обычно проходит Точнее, приходят к разумному компромиссу
В отношении справочников - конечный объект крайне желательно иметь уникальным для данного конкретного справочника. Это может быть либо класс, либо конечная форма SCX. Но созданные только и исключительно для соответствующего справочника и ни для чего больше.

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

Ну все, пошли в ход воздушные абстрактные термины, хоть со стула падай.

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

Simple777
Мужик хороший был Бутлеров, но в техническом отношении он был слабоват.
Кстати - вода является универсальным растворителем.
Ratings: 1 negative/0 positive
Re: Как определить что поле в Grid изменили
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Пиши универсально, кто мешает.

И не мешай высказывать универсальные высказывания, типа:
- что универсально написать невозможно
- что писать нужно максимально универсально
- что на всякий случай каждый нативный элемент нужно обернуть в класс
- что что я чекнулся чтоли, в IDE фокса классов будет чуть меньше чем грязи
- что вы замучаетесь писать универсально
- что такое пишется как два пальца об асфальт, ну три максимум
- что надо удовлетворять клиента
- что надо удовлетворять теорию
- что надо удовлетворять себя
- ...
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
Пиши универсально, кто мешает.
И не мешай высказывать универсальные высказывания, типа:
- что универсально написать невозможно
- что писать нужно максимально универсально
- что на всякий случай каждый нативный элемент нужно обернуть в класс
- что что я чекнулся чтоли, в IDE фокса классов будет чуть меньше чем грязи
- что вы замучаетесь писать универсально
- что такое пишется как два пальца об асфальт, ну три максимум
- что надо удовлетворять клиента
- что надо удовлетворять теорию
- что надо удовлетворять себя
- ...

Намек понял.

Если серьезно, я и сам не люблю это резиновое слово - "универсальный".
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
lulgu
Кстати - вода является универсальным растворителем.

Отчего же вода не растворяет стеклянный стакан, ежели ее туда налить?
Окислитель и растворитель - не синонимы. Например, нехилым растворителем является плавиковая кислота HF - вот насчет формулы не уверен - очень давно это изучал.
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
XAndy

Сообщений: 3803
Откуда: Киев
Дата регистрации: 05.02.2004
ZenTigra
теперь попробую что-то универсальное сделать и для формы редактирования...
Делай, не слушай любителей копипаста . Как делать - вопрос вторичный, можно в одной форме, можно в разных, с буферизацией или без, всё реализуемо. Очень много справочников по сути элементарные. Плодить какой-либо код ради справочников, как во вложении - себя не уважать



Исправлено 1 раз(а). Последнее : XAndy, 24.04.17 20:38
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Simple777
lulgu
Кстати - вода является универсальным растворителем.

Отчего же вода не растворяет стеклянный стакан, ежели ее туда налить?
Окислитель и растворитель - не синонимы. Например, нехилым растворителем является плавиковая кислота HF - вот насчет формулы не уверен - очень давно это изучал.

Растворяет. Оставьте лет тысяч на пятьдесят, и вы в этом убедитесь.
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
"Ясно" (C) (of63)
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
XAndy
Делай, не слушай любителей копипаста
Странный вывод. Для того чтобы описывать формы справочников совершенно не требуется что-либо куда-либо копировать. Нужно лишь разместить визуально нужные элементы (если грид, то просто колонки, и контролы в них - если нужны не штатные текстбоксы) и задать им свойства - свойства никак не "универсальные", а именно специфичные для конкретного справочника (и его полей).

Повторять BROWSE смысла нет вообще никакого - нравится BROWSE - ну пиши эту команду, зачем бы тогда вообще говорить про какой-то код... BROWSE это 100% "универсальный вариант ввода данных в таблицы" - при том не только справочники - и он УЖЕ ЕСТЬ, зачем повторять

XAndy
Плодить какой-либо код ради справочников, как во вложении - себя не уважать
Чтобы не "плодить код" и существуют классы, где этот код будет прописан единожды.
А как только начинают прописывать где-то "порядок вывода полей", "заголовки, текст для статусбара, текст для тултипа, текст подсказки/комментария", "возможность быстрой сортировки и её параметры", "необходимость использовать для заполнения комбо или чекбокс или datetime picker и их параметры", "функцию проверки корректности заполнения поля", "функцию обязательную для исполнения после модификации записи" и т.п. А "форму" оставляют одну - и называют это гордо "системой абсолютно гибкой метаинформации" - ну тут я совершенно точно могу диагностировать "горе от ума"


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
В твоем XML-е тоже прописана "схема", и должна прилагаться к файлу XML. Но так не часто бывает.
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ZenTigra
Уговорили Форму просмотра справочников (на основе Grid) я уже сделал, она универсальная, с автоматическим добавлением нужных полей, теперь попробую что-то универсальное сделать и для формы редактирования...
А попробуй такую схему.
Вынеси всю работу с данными, в отдельный, не визуальный класс.
Т.е. определяешь, то, что нужно для все классов, выделяешь общее, и прописываешь туда.
Далее, для каждого справочника делаешь наследника этого класса.
Возможно он будет почти пустой, в простейшем случае.
Но в любой момент, можешь конкретный чем то дополнить.

Ну и соеденяй этот класс, со своей "универсальной" формой.
И с формой редактирования.


------------------




Исправлено 1 раз(а). Последнее : Аспид, 25.04.17 08:26
Ratings: 0 negative/0 positive
Re: Как определить что поле в Grid изменили
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Аспид
ZenTigra
Уговорили Форму просмотра справочников (на основе Grid) я уже сделал, она универсальная, с автоматическим добавлением нужных полей, теперь попробую что-то универсальное сделать и для формы редактирования...
А попробуй такую схему.
Вынеси всю работу с данными, в отдельный, не визуальный класс.
Т.е. определяешь, то, что нужно для все классов, выделяешь общее, и прописываешь туда.
Далее, для каждого справочника делаешь наследника этого класса.
Возможно он будет почти пустой, в простейшем случае.
Но в любой момент, можешь конкретный чем то дополнить.

Ну и соеденяй этот класс, со своей "универсальной" формой.
И с формой редактирования.

Помнится, про этот класс CUSTOM как продолжение формы мы с ИК немного обсуждали.
Его лучше создавать единым для всех форм, а не только отдельно для справочников.



Исправлено 1 раз(а). Последнее : lulgu, 25.04.17 09:23
Ratings: 1 negative/0 positive
Re: Как определить что поле в Grid изменили
ZenTigra
Автор

Сообщений: 514
Дата регистрации: 03.12.2004
Дабы в дальнейшем не наступить на грабли, я создал отдельно классы для справочника
И уже на основе их переписал "Универсальную форму" + Форму для редактирования, и если что-то не заладиться с отдельным справочником, то я просто на основе этих классов создам еще одну форму...

PS.Спасибо за совет.
Ratings: 0 negative/0 positive


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

On-line: 21 vech  (Гостей: 20)

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