![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка компонентов на modified [D6, IB5.x]
skiper © (2002-12-18 23:14:00)Подскажите, как проверить целую кучу редакторов (maskedit) на форме на признак модификации данных (например при закрытии формы). Данные компоненты размещены в разных фреймах, сведенных в общий фрейм. Я, к сожалению, пока ничего не нашел.
Sergey Masloff (2002-12-22 21:50:00) [1]Andriano ©
><Не висеть в сетке> ?
>Для этой цели предназначен DataSet и UpdateSQL. Именно для >этого. И не надо городить огород.
Ну сделай TDatabase.Close посмотри что получится и потом напиши чем тебе помогли ДатаСет с АпдейтСиквелем. А пока Датабейзу Close не сделали все ресурсы распределенные под соединение заняты...
skiper ©
for i:=0 to Pred(ComponentCount) do
begin
if (Components[i] is TMaskEdit) then
begin
if (Components[i] as TMaskEdit).Modified then
begin
ShowMessage("Изменения были!");
Exit; // Если изменение одного достаточное основание
end;
end;
end;
Andriano (2002-12-21 09:09:00) [2]<Не висеть в сетке> ?
Для этой цели предназначен DataSet и UpdateSQL. Именно для этого. И не надо городить огород.
skiper (2002-12-21 03:36:00) [3]Я использовал maskedit для того, чтобы не висеть в сетке, т.к dbedit сохраняет связь с полем. Необходимо определить, была ли модификация хотя бы одного компонента, не городя огорода из кода, что-то компактное, вроде циклического запроса на on close, но что-то не приходит ничего в башку. Если да- то транзакция на модификацию записи (это уже я знаю). Если нет - просто убить форму (это тоже ясно).
Prooksius (2002-12-19 10:14:00) [4]2 Delirium^.Tremens © (19.12.02 10:09)
> как проверить целую кучу редакторов (maskedit) на форме
> на признак модификации данных
По-моему он об этом и спрашивал.
Так, автор?
Delirium^.Tremens (2002-12-19 10:09:00) [5]2Prooksius ©>
Что-то я не вижу где он сказал, что это нужно для каждого в отдельности? Если бы это было так, то никаких сложностей бы и не возникло кроме нудного кодописания.
Prooksius (2002-12-19 10:05:00) [6]2 Delirium^.Tremens © (19.12.02 10:01)
Тогда при изменении одного только поля получитая, что изменились все. А зачем? ИМХО, как раз такого и не надо.
Delirium^.Tremens (2002-12-19 10:01:00) [7]Я бы объявил глобальную переменную типа boolean, в событии OnChange для одного из MaskEdit написал, что эта переменная := true; и назначил этот обработчик для всех остальных MaskEdit"ов
Prooksius (2002-12-19 09:55:00) [8]У тебя maskedit не DB-Aware??
Тогда IMHO второй вариант.
Prooksius (2002-12-19 09:54:00) [9]Ты хочешь послать запрос на сервер о сохранении только измененных полей?
У полей Dataseta, которые ассоциированы с данным Edit-ом по-моему должно быть cв-во modified или что-то в этом роде.
Иначе, как вариант, можно сделать массив boolean переменных, которые будут ставиться в тру при модификации соответствующего поля (эдита),
при закрытии формы формировать запрос по массиву.