Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2011, 04:23   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию модификация TApplication

... или правила плохого тона
Ну что ж, господа, всех поздравляю, всем спасибо!
модификация TApplication прошла успешно!

смысл модификации:
по-умолчанию Application.OnMessage можно назначить только одну процедуру.
а что делать если нужно чтоб на событие реагировало несколько разных процедур?
моя модификация как раз и добавляет такую возможность - назначать OnMessage
неограниченное кол-во процедур, грубо говоря.

реализация:
1. в классе TApplication создаем свое поле:
privat
FOnMessages:array of TMessageEvent;
это будет массив, в который будут записываться указатели на назначаемые процедуры

2. дополнить код вызова FOnMessage вызовом всех процедур из массива:
Код:
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
for i:=0 to Length(FOnMessages)-1 do if Assigned(FOnMessages[i]) then FOnMessages[i](Msg, Handled);
3. реализовать функцию для добавления процедуры в массив:
public
function AddOnMessage(proc:TMessageEvent):in teger;
код функции весьма прост:
Код:
d:=Length(FOnMessages);
SetLength(FOnMessages,d+1);
FOnMessages[d]:=proc;
Result:=d;
по моей идее функция будет возвращать индекс массива, куда она добавилась,
чтобы потом, в случае необходимости, можно было ее из массива удалить.

в итоге
теперь у нас есть возможность назначать любое кол-во процедур.
насколько это полезно/бесполезно - зависит от конкретных задач и для каждого индивидуально.
соотношение результат/цена тоже на вкус и цвет. любителям "хорошего тона" покажется неприемлемым,
а мне, деревенскому простолюдину, вполне нравится =)
вобщем, надо оно вам или нет - решайте сами.
если захотите повторить этот изврат - как обеспечить себе возможность редактировать
исходники стандартных компонентов я рассказывал в хитроback'й Delphi
xrob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модификация элементов словаря the_deer_one C# (си шарп) 4 29.06.2011 13:18
Модификация рандома RayGGG Общие вопросы C/C++ 2 17.02.2011 03:43
Модификация сканера gamer123 Общие вопросы C/C++ 1 30.10.2010 22:45
Модификация фаила *.db @#dro# Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 30.01.2010 18:15
модификация программы olla-la Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.05.2008 14:01