Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

TDataSet   Найти похожие ветки 

 
Alex7   (2006-04-23 16:36) [0]

Уважаемые мастера!  Вопрос такой:

Есть много таблиц: Table1, ......TableN.
В каждой таблице свой обработчик, обращающийся
к одной и той же процедуре "Del".

procedure Table1DeleteError(DataSet: TDataSet; E: EDatabaseError;
 var Action: TDataAction);
begin
Del( );
end;

Хотелось бы заменить множество этих процедур
на что-то более изящное. Интуитивно чувствую,
что может быть один обработчик вроде
procedure DataSetDeleteError, но как это
сделать не соображу. Спасибо.


 
Johnmen ©   (2006-04-23 17:11) [1]

У всех д.б. один и тот же обработчик. Его и укажи для всех событий.


 
Alex7   (2006-04-23 17:35) [2]

Так я и делаю. Но событие для каждой таблицы свое.
Поэтому приходится из каждого OnDeleteError обращаться
к одному и тому же обработчику. А это громоздко.


 
Johnmen ©   (2006-04-23 18:18) [3]

Я ничего не понял...


 
Alex7   (2006-04-23 18:37) [4]

> Я ничего не понял...
                     !
procedure Table1DeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Del( );
end;
                     !
procedure Table2DeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Del( );
end;
........................................
                     !  
procedure TableNDeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Del( );
end;

Вот так получается. А как упростить?


 
Johnmen ©   (2006-04-23 18:52) [5]

Ну я же сказал, что всем событиям назначить один обработчик!
А у тебя на каждое событие свой обработчик.


 
Alex7   (2006-04-23 19:02) [6]

Тогда я не понял, как это сделать.
Если можно, какой-нибудь пример.


 
Johnmen ©   (2006-04-23 19:09) [7]

В Инспекторе объектов переходишь к закладке Events.
Для нужного события свешиваешь соплю (давишь такую кнопочку с равностронним треугольником, смотрящим своей вершиной вниз), выбираешь из списка нужный обработчик.
Естественно, хоть один подходящий уже должен существовать...


 
Alex7   (2006-04-23 19:19) [8]

Спасибо. Сейчас попробую.


 
Alex7   (2006-04-23 19:38) [9]

Прошу прощения, но какой объект выбрать?
У меня модуль Данных. Там 15  TTable и
15 TDataSource. И все. Для каждого
свое событие.
Если бы был какой-то общий TDataSet,
тогда ясно. Но его нет (и компонента такого нет)


 
Johnmen ©   (2006-04-23 19:45) [10]

Честно говоря, я опять перестал понимать...


 
Alex7   (2006-04-23 20:04) [11]

Наверное, я ошибаюсь, считая,
что событие надо перехватывать
там, где оно происходит.
В данном случае в TTable.
(В свое время я пытался перехватить
OnDeleteError в форме с использованием
конструкции Try...Except - не вышло).
Может быть поэтому мы не понимаем
друг друга.


 
sniknik ©   (2006-04-24 00:37) [12]

> Если бы был какой-то общий TDataSet,
> тогда ясно.
а посмотри на передаваемые в события параметры... которые сам же привел.


 
jack128 ©   (2006-04-24 01:43) [13]

Alex7   (23.04.06 19:38) [9]
еще раз с самого начала.

Пусть ты кинул на форму 15 таблиц на форму.  Обработчики еще не написал.  

Пункт 1:
Выбираешь Table1, переходишь на закладку Events, дважды кликаешь мышью на событии OnDeleteError. в коде появляется заготовка:

procedure Table1DeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Del( ); // это ты вписывшь сам.
end;

Пункт2:
теперь на форме выделяешь Table2, перходишшь на закладку Events в инспекторе объектов. выделяешь OnDeleteError, кликаешь на соплю (давишь такую кнопочку с равностронним треугольником, смотрящим своей вершиной вниз), (с)  и из списка выбераешь Table1DeleteError.  

Теперь повторяешь пункт 2 для оставшихся 13 таблиц.


 
Германн ©   (2006-04-24 02:58) [14]

Смешно, ей-богу!
Два Мастера Дельфи не могут совместить свои ответы, чтобы получилочь единое целое!


 
Alex7   (2006-04-24 08:14) [15]

> jack128 ©
Большое спасибо. Вот теперь
я понял (и сделал) в чем дело.
Вся беда в том, что на так наз.
"соплю" (в пункте 2) я как-то
не обращал внимания.
Теперь код принял нормальный
вид. Еще раз спасибо.


 
Anatoly Podgoretsky ©   (2006-04-24 09:13) [16]

jack128 ©   (24.04.06 01:43) [13]
Отмечаем все 15 сразу и устанавливаем или пишем обработчик.



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.039 c
1-1144320476
Muhan_
2006-04-06 14:47
2006.05.14
Почему под проксей не идет эта функция?? ((


15-1145133578
alex-drob
2006-04-16 00:39
2006.05.14
Сеть по модемам


15-1145376227
Gorlummmm
2006-04-18 20:03
2006.05.14
Архивирование в Delphi


4-1140438417
Pit
2006-02-20 15:26
2006.05.14
Процессы


15-1145359265
Mirror
2006-04-18 15:21
2006.05.14
Скорость работы WinXP