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

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

Изменения в наборе данных


RDA ©   (2002-06-29 15:11:00) 

Мастера подскажите как узнать изменил ли пользователь данные в наборе или нет, для того чтобы задать вопрос "Сохранять или нет изменения"


PavelB   (2002-07-01 09:58:00) [1]

а почему бы не использовать свойство Modified TDataSet


Lola   (2002-06-30 12:59:00) [2]

По-моему, сравнивать надо при потере фокуса компонентом и переменная - FModified := True, а запрашивать о сохранении, если выбрали другую операцию типа "добавить запись" или "печать", т.е. не только при закрытии формы. Тогда и все сравнивать не придется.


Anatoly Podgoretsky   (2002-06-30 11:45:00) [3]

kaif © (30.06.02 04:34)
Нет нужды сохранять и оповещать пользователя, если нет изменения, оповещать нужно при только отмене операции если есть измененые данные, а иначе пользователь взмолится на такой добрый серсвис


dus   (2002-06-30 11:05:00) [4]

Только способ, предложенный kaif"ом тоже не лишен недостатков. Представь, что пользователь вводитинформацию: ввел один символ - отработали, ввел другой - опять отработали, хотя вроде бы и незачем...

RDA, пиши конкретнее, какой компонент используешь.


kaif   (2002-06-30 04:34:00) [5]

Можно, конечно и сравнить все, как предлагает, Anatoly Podgoretsky © (29.06.02 20:20)
:))
А затем, если пользователь все же хочет сохранить написать:
ShowMessage("Да тут сохранять нечего! Измените что-нибудь и нажмите OK еще раз");
(шутка)


kaif   (2002-06-30 04:28:00) [6]

Нужно сделать переменную FModified: boolean. Затем в обработчик DataSource.OnDataChange вписать:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if Field <> nil then
FModified := True;
end;
---------
Затем в событии OnCloseQuery формы проверить FModified:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if FModified then
case MessageDlg("Сохранить изменения", mtConfirmation,
[mbYes, mbNo, mbCance], 0) of
mrYes: SaveChanges;
mrCancel: CanClose := False;
end;
end;
----------
Затем написать процедуру сохранения, в которой FModified после успешного сохранения False Присваивать.
----------
В общем, что-то в этом роде...


Anatoly Podgoretsky   (2002-06-29 20:20:00) [7]

Если примененные тобой компоненты не поддерживают саойство modified, то как минимум помможет старинный, проверенный метод, сохранить и сравнить


Lola   (2002-06-29 19:47:00) [8]

В каком компаненте он вводит данные?


Наверх

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