Форум: "Начинающим";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c