![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение изменений в бд. [D5, dBase, FoxPro]
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, а не после перехода на другую строку