4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75
1

Как определить редактировались ли данные? Как редактировать данные через DBEditEh

11.02.2018, 21:15. Показов 1895. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Снова требуется ваш совет.
Пишу программу, через которую пользователь будет редактировать реквизиты по покупателям. Сохранение будет реализовано через кнопку (на скриншоте отсутствует).

Как определить редактировались ли данные? Как редактировать данные через DBEditEh


Есть форма, с DBGridEh и простыми Edit'ами.
В Edit'ах отражаются данные активной строки DBGridEh.
Если пользователь что-то редактировал, но вдруг решил перейти на другую строку или совсем закрыть форму через крестик, то должно выводиться сообщение что-то вроде "Вы хотите сохранить изменения?". Дак вот. Как узнать были ли изменения? Понятно, что у edit есть событие OnChange и можно сделать проверку, но придется ведь каждый edit так прописать, а их у меня будет еще много. И не только Edit'ы.

Изначально вместо Edit были DbEditEh, но не хватило понимания сделать через них. У DataSource поставила AutoEdit в значение false. Отредактировала один DBEdit, перехожу на другой, вылетает ошибка "dataset not in edit or insert mode delphi". Предполагаю потому, что AutoEdit=false и он требует от меня Edit, post и т.д. и т.п. Если стоит AutoEdit=true, данные конечно же меняются сразу. А мне, напоминаю, необходимо сохранение через нажатие на кнопку. Может можно прописать в BeforePost, что если запись находится в режиме редактирования (через свойство state можно это сделать, насколько верно я прочла в интернете) и пользователь не нажимал кнопку сохранить, то Abort. А на события FormClose и DBGridEhCellClick повесить диалоговое окно, если запись редактировалась, но не была сохранена. Но имеет ли место такой вариант?

Хотелось бы услышать ваше мнение, советы, ссылки, подсказки. Важна любая помощь. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2018, 21:15
Ответы с готовыми решениями:

Как редактировать данные через DataGridView
Всем привет. кто может подсказать как редактировать данные через DataGridView???

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

Как редактировать данные?
Привет всемю. У меня есть страничка длая редактирования данных. Вызвать часть данных указанных при...

Как редактировать данные в TMemoryStream
Помогите, я уже запутался! Мне необходимо загрузить файл в TMemoryStream, изменить определенное...

5
пофигист широкого профиля
4755 / 3190 / 861
Регистрация: 15.07.2013
Сообщений: 18,461
12.02.2018, 02:51 2
Цитата Сообщение от Tanushka=) Посмотреть сообщение
Хотелось бы услышать ваше мнение
Редактирование в DBGrid это из эпохи неандертальцев. (Которые вымерли возможно именно поэтому
0
Модератор
9611 / 6218 / 2423
Регистрация: 21.01.2014
Сообщений: 26,522
Записей в блоге: 3
12.02.2018, 07:24 3
Tanushka=),
1. В секции private класса формы объявите переменную Saved
Delphi
1
2
3
4
5
private { Private declarations }
    Saved: boolean;
public
    { Public declarations }
end;
2. В событии создания формы инициализируйте ее
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
 Saved := true;
end;
3. Создайте для одного из контролов, например для Edit1 обработчик события OnChange, в котором измените значение переменной
Delphi
1
2
3
4
procedure TForm1.Edit1Change(Sender: TObject);
begin
 Saved := false
end;
4. Назначьте в инспекторе объектов этот обработчик для всех остальных нужных контролов (Эдиты, Комбобоксы, Мемо и т.д.)
5. В событии клика на кнопку сохранения измените значение переменной
Delphi
1
2
3
4
5
procedure TForm1.btn_SaveClick(Sender: TObject);
begin
//Тут Ваш код сохранения...
 Saved := true;
end;
6. В событии формы OnCloseQuery пропишите
Delphi
1
2
3
4
5
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if not Saved then ShowMessage('Данные изменены и не сохранены! Сохраните сейчас же!');
 CanClose := Saved;
end;
и, собственно, все...
1
4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75
12.02.2018, 09:25  [ТС] 4
northener, вероятно вы не очень внимательно читали мой вопрос. dbgrid только отображает данные в моем случае.
0
7 / 7 / 2
Регистрация: 21.07.2016
Сообщений: 68
12.02.2018, 11:40 5
Данные в DBGrid получаете из запроса?
0
4 / 4 / 0
Регистрация: 15.06.2011
Сообщений: 75
12.02.2018, 15:17  [ТС] 6
RatWar, да

D1973, спасибо большое за вариант!
0
12.02.2018, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2018, 15:17
Помогаю со студенческими работами здесь

Как редактировать данные в таблице html
Я делаю изменяемое расписание для сайта. Вообщем запись уроков я сделал, осталась малость - это...

Как редактировать данные в БД с помощью SQL запроса
public void RedDolj(string NazDolj)// метод редактирования ДОЛЖНОСТИ { ...

Как редактировать данные из двух связанных таблиц?
компонент fdquery. имеются данные таблицы l2,l3. в l2 столбцы cтрана,город,ид. в l3 столбец...

Как редактировать данные в таблице созданной запросом?
Нужно редактировать данные прямо таблице созданной запросом. Как это можно сделать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru