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

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

Проверка компонентов на 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 переменных, которые будут ставиться в тру при модификации соответствующего поля (эдита),
при закрытии формы формировать запрос по массиву.


Наверх

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