Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1144072886
hgd
2006-04-03 18:01
2006.05.14
Использование google map


15-1145310395
Галинка
2006-04-18 01:46
2006.05.14
Delphi 20xx Personal Edition Где взять бесплатно?


2-1145789779
sysop
2006-04-23 14:56
2006.05.14
Выравнивание строки


15-1145356038
AlexSane
2006-04-18 14:27
2006.05.14
Работа со сканером в Делфи


15-1145355356
McSimm
2006-04-18 14:15
2006.05.14
>|< теперь в новой упаковке.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский