Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 07:57   #1
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию Сохранение данных в таблице

Вводим данные в DBGrid, не перемещаясь на другую ячейку, т.е. курсор остаётся мигать в ячейке, где последний раз редактировались данные, закрываем программу. Почему при следующем коде не сохраняются данные?

Код:
procedure TForm11.FormClose(Sender: TObject; var Action: TCloseAction);
begin

if DM.TelephonTable.Modified then
 DM.TelephonTable.Post;

end;
Aleksey1989 вне форума Ответить с цитированием
Старый 21.10.2010, 08:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
не перемещаясь на другую ячейку, т.е. курсор остаётся мигать в ячейке, где последний раз редактировались данные
Как вариант объяснения:
Редакция данных не закончилась(курсор мигает)
значит данные из редактора (поля ввода где мигает курсор) не были переданы в таблицу(набор данных связанный с DBGrid).
Значит таблица не была изменена (modified =false ).
Значит и сохранять нечего.

для обычных полей ввода (edit и др.) есть событие OnExit как для DBgrid и его встроенных редакторов не знаю.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.10.2010 в 08:48.
evg_m на форуме Ответить с цитированием
Старый 21.10.2010, 10:27   #3
Aleksey1989
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Как вариант объяснения:
Редакция данных не закончилась(курсор мигает)
значит данные из редактора (поля ввода где мигает курсор) не были переданы в таблицу(набор данных связанный с DBGrid).
Значит таблица не была изменена (modified =false ).
Значит и сохранять нечего.

для обычных полей ввода (edit и др.) есть событие OnExit как для DBgrid и его встроенных редакторов не знаю.
Для DBgrid есть dgCancelOnExit, но и оно не работает. Кстати, если вписать приведённый в 1-м посте код для события OnClick кнопки, то сохранение будет произведено.
Aleksey1989 вне форума Ответить с цитированием
Старый 21.10.2010, 10:38   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Aleksey1989 Посмотреть сообщение
Вводим данные в DBGrid, не перемещаясь на другую ячейку, т.е. курсор остаётся мигать в ячейке, где последний раз редактировались данные, закрываем программу. Почему при следующем коде не сохраняются данные?

Код:
procedure TForm11.FormClose(Sender: TObject; var Action: TCloseAction);
begin

if DM.TelephonTable.Modified then
 DM.TelephonTable.Post;

end;
Если сильно нужно, то можно и так

Код:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
     DM.TelephonTable.Post;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 21.10.2010, 11:16   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Для DBgrid есть dgCancelOnExit, но и оно не работает. Кстати, если вписать приведённый в 1-м посте код для события OnClick кнопки, то сохранение будет произведено.
совершенно верно
нажатие кнопки приводит к перемещению фокуса ввода на саму кнопку и
потере фокуса табличным редактором (завершение редакции и изменение данных).
Т.е. наша задача при закрытии формы как-то сказать Dbgrid -у что редактирование пора заканчивать.
что-то вроде CloseEdit вот только такого метода не предусмотрено(я по крайней мере не знаю).
можно попытаться перед проверкой IsModifed сделать что-нибудь из следующего (по сути программно поменять текущую ячейку).
Код:
Dbgrid.SeletedField:=nil; 
DBgrid.SelectedIndex:=-1;/или другой индекс корме того который был
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.10.2010 в 11:21.
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid Номерация данных в таблице sl963 БД в Delphi 0 30.05.2010 19:20
Автоматическая замена данных в таблице. <Dmitry!> Microsoft Office Excel 4 18.05.2010 12:43
Сохранение выражений формы в таблице Box_slav Microsoft Office Access 11 24.03.2010 19:43
Кол-во данных в таблице dani92 БД в Delphi 1 02.04.2009 07:58
Сохранение данных в таблице Таня84 БД в Delphi 7 04.03.2007 02:44