Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функция Ditto в Delphi [D6, Paradox]


MsGuns ©   (2002-07-22 11:01:00) 

При переводе старых прог в Delphi столкнулся с такой проблемой:
В старых прогах при редактировании-добавлении в таблицы работает станд.функия Ditto (Ctrl+D), по которой в тек.поле записи прописывается значение этого же поля предыдущей (верхней) записи. Юзера настолько привыкли к этому, что требуют того же в новых прогах. А вот тут-то и проблема: При редактировании я просто "прыгаю" вверх и, "забрав" поле в переменную Variant, возвращаюсь назад и вписываю его в редактируемую запись (ключи я редактировать не даю), а при вставке приходится в обработчике BeforInsert запоминать все поля в памяти (для этого я исп-ю массив), откуда потом по кнопке и прописываю значения в добавляемую запись. Но при этом есть существ.минусы:

При редактировании кнопка Cancel отменяет только те изменения, которые были сделаны после последнего "прыжка", т.е. восстанавливается только 2-3 поля вместо всех;

Морока с сохранением полей ВСЕЙ записи при каждом Insert/Append

Может быть, кто-то подскажет более красивый способ решения этой проблемки ?


MsGuns   (2002-07-22 15:22:00) [1]

Ну рок-музон это же не делфа, а нечто совсем другое..)))


Lord Warlock   (2002-07-22 15:19:00) [2]


> (ни звука модератору !)


что рассердится? по причине...??


MsGuns   (2002-07-22 15:12:00) [3]

> (Кстати, ты случаем, не поклонник Doro ?)
это чего??

Просто WarLock - имя рок-группы, с которой дебютировала известная рок-дева Doro (что-то около 1986-87гг). Но это так, к слову (ни звука модератору !)


Lord Warlock   (2002-07-22 14:57:00) [4]


> (Кстати, ты случаем, не поклонник Doro ?)


это чего??

> Так я так и делаю !!!


правильно делаешь, лучше не получится


MsGuns   (2002-07-22 14:52:00) [5]

>Lord WarLock

>Попробуй на OnScroll оставить сохранение нужных полей в переменных или массиве, а потом на эту ф-цию просто подпихивать оттуды значения

Так я так и делаю !!!
Вопрос был можно ли все это как-то кучнее и круче ?
(Кстати, ты случаем, не поклонник Doro ?)


Lord Warlock   (2002-07-22 14:45:00) [6]


> MsGuns © (22.07.02 14:40)


Попробуй на OnScroll оставить сохранение нужных полей в переменных или массиве, а потом на эту ф-цию просто подпихивать оттуды значения


MsGuns   (2002-07-22 14:40:00) [7]

>Viewer
Наверное, я не достаточно прозрачно задал вопрос..((
Редактируются ВСЕ поля, но фишка "Ditto" просто "сносит" значение этой же колонки из ПРЕДЫДУЩЕЙ записи в ТЕКУЩУЮ.
>Не DBAware поля в которые так или иначе заноситься текущая запись.
В чем разница между между этим способом и просто массивом Variant. Просто куча каких-то левых (юзеру их на фиг не надо показывать) компонент, которых к тому же неясно сколько (таблов в проекте может быть 2-3 десятка и все с разными структурами)
> нажав Save - добавить запись.
а это тут причем, если я по-любому ОБРАБАТЫВАЮ BeforePost ?


Viewer   (2002-07-22 11:26:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо