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

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

Сохранение изменений в бд. [D5, dBase, FoxPro]


Страницы:   1 2

ph ©   (2002-04-03 12:01:00) 

Как сохранить изменения в бд сразу же после того как была изменено значение ячейки DBGrid (пока выделена эта ячейка)? Если вставлять Table1.Post в Table1field1Change, BGrid1Columns0UpdateData, то программа зацикливается и возникает ошибка Stack overflow.


ph   (2002-04-03 15:39:00) [1]

уже разобрался. Всем спасибо!


ph   (2002-04-03 15:31:00) [2]

Спасибо, Aleksandr
DBGrid.OnKeyDown:
if (Key=VK_Return) and (Table.State IN [dsInsert,dsEdit]) then begin
Table.Post;
Key:=0
end;
работает. А как сделать если есть колонка CheckBox-ов и надо обрабатывать клики мыши таким же образом?


Aleksandr   (2002-04-03 15:21:00) [3]

Johnmen © :
1. Критерий надежности. Если пользователь, заполня только первую колонку, случайно нажмет стрелку вверх, и останутся истчо обязательные для заполнения колонки?
2. А как в гриде будут отображаться данные блобовых типов?


Johnmen   (2002-04-03 15:03:00) [4]

>Aleksandr © : Я вот чего не могу понять - если задачу можно решить меньшими телодвижениями и меньшими ресурсами, то почему же так не делать ?


Aleksandr   (2002-04-03 14:26:00) [5]

Johnmen © :

1. Да, но всегда ли такое сочетание удобно?
2. Ну, сударь, они в гриде заменены на нажатия стрелок... А лишняя форма погоды не сделает - если один раз forms был подключен, дальше много памяти не убудет...


Johnmen   (2002-04-03 14:19:00) [6]

>Aleksandr © :
1. А выпадающие списки и так без мыши - <Alt>+<стрелка вниз/вверх> ...

2. У тебя лишних как минимум 2 нажатия - Insert и Enter
а также лишняя форма...


Erlend   (2002-04-03 14:13:00) [7]

Просто при выходе из модальной формы пишешь:
if ((Table1.State in [tsEdit]) or Table1.Modified then Table1.Post;


deleon   (2002-04-03 14:07:00) [8]

Сделать свой грид на основе TDbGrid и добавить ему событие OnCellExit :-)))


Aleksandr   (2002-04-03 14:05:00) [9]

Johnmen ©
Совершенно немного... В процесс добавляется два нажатия клавиш: Insert - для вызова окна добавления и Enter - для сохранения... Переход по полям - те же табуляторы; удобства в том, что выпадающие списки можно без перехода на мышь выбирать...


Johnmen   (2002-04-03 13:56:00) [10]

>Aleksandr © Special for your !

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


Aleksandr   (2002-04-03 13:41:00) [11]

Johnmen ©
Позволю себе с Вами согласиться, что простенькие задачки можно решать и одной гридой... Но приведите пример, когда без гриды задача не решается? Я таких не встречал :)


Johnmen   (2002-04-03 13:35:00) [12]

>Aleksandr ©
>...моветон - разрешать редактировать прямо в гриде...

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


Aleksandr   (2002-04-03 13:20:00) [13]

ЗЫ
В смысле, Экшн создать с этим кодом и шорткутом Enter...


Aleksandr   (2002-04-03 13:19:00) [14]

Ну тогда можешь делать так:
добавляешь метод на нажатие клавиши у гриды:
DBGrid.OnKeyDown:

if (Key=VK_Return) and (Table.State IN [dsInsert,dsEdit]) then begin
Table.Post;
// и поищи в хелпе, чего там надо отправить гриде, чтобы она из состояния Editing вышла, если сама не выйдет
Key:=0
end;

Вариант 2 : создать Action с тем же кодом:

if Table.State in [dsInsert,dsEdit] then
Table.Post;


А вообще, это моветон - разрешать редактировать прямо в гриде... Обычно для редактирования юзают модальные формы. Ведь грида далеко не все типы данных могет отображать.


ph   (2002-04-03 13:08:00) [15]

После нажатия Enter


Aleksandr   (2002-04-03 13:03:00) [16]

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


ph   (2002-04-03 12:41:00) [17]

признак: редактирование закончилось - хорошо бы если б было Table1field1Change, BGrid1Columns0UpdateData, но программа зацикливается.


Aleksandr   (2002-04-03 12:35:00) [18]

Ну-ну... А по какому признаку у тебя считается, что редактирование закончилось?


ph   (2002-04-03 12:27:00) [19]

OnColExit тоже не работает


ph   (2002-04-03 12:23:00) [20]

это нужно чтобы сразу расчитывался Footer, а не после перехода на другую строку


Страницы:   1 2

Наверх

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