artbear писал(а) 11. Августа 2008 :: 08:36:Только особого смысла не вижу - похоже, что ты хочешь создать универсальный "большой" список и с ним работать. Зачем? все равно как-то нужно параметры передавать, а при передаче ты будешь знать их количество
В моем случае смысл есть. Список не такой большой - 6 параметров макс. Это события формы.
В кратце:
Есть глоб.перехватчик, который для каждой формы создает класс-перехватчик (чисто в служебных целях, назовем его КПФ) и, при необходимости, раздает события "подписавшимся классам", если таковые имеются, и модулю формы.
Предугадывая вопрос: "дурак, зачем ты это сделал?", опишу вкратце. Кроме стандартных событий FormEx и формы, КПФ генерит дополнительные события, при этом упростились почти все классы и модули формы (выкинуты перехватчики, соответственно передача события пред.перехватчику, проверки нажатий клавиш (спец.символы, печ.символы и т.д.) и мыши, проверки событий: "с этим реквизитом происходит нажатие?", "вышла мышка или курсор за пределы реквизита? - типа потери фокуса" и т.п.). При этом, кроме "подписавшихся", класс дружит с теми, кто сам перехватывает форму (для еще не переделанных классов). Вот такой вот симбиоз. А теперь ответ на вопрос: "Зачем?". У подписавшихся классов:
1) у одного и того же события может быть разное количество параметров, т.е. ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО) или ПриНажатииКнопкиКлавиатуры(КодКлавиши).
2) событие может быть процедурой и функцией
Хотел решить через "МенеджерСобытий", но к менеджеру никак не вяжутся оба пункта - нужно четко указывать количество передаваемых параметров и возвращает метод значение или нет.
С выполняемым модулем намного проще (хоть и кода строк на 10 больше из-за перебора "подписчиков"). Я передаю списком все значения (например КодКлавиши, Alt, Shift, Ctrl, Символ, ФСО), а сколько нужно подписавшемуся классу параметров - это его дело. А перебирать, сколько параметров нужно конкретному методу и соответственно дополнять или обрезать список значений - лишняя трата времени и сил.
Ясно ли написал? (с русским у меня проблема
)
Критикуйте, готов ответить на вопросы.