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

Вниз

Логирование нажатия кнопок   Найти похожие ветки 

 
{bas} ©   (2003-09-02 14:45) [0]

Привет всем!
Есть такая проблема: Есть готовое приложение с множеством(тысячью) кнопок и разными типами(TSpeedButton, TBitButton, TButton), надо сделать логирование нажатия любой кнопки.

Что можете посоветовать.???

У меня есть только одно решение - поправить в исходниках у TControl метод Click, в кот. будет проверяться принадлежность к нужным классам и записывать в файл, то что мне нужно.


 
Skier ©   (2003-09-02 14:52) [1]

>{bas} © (02.09.03 14:45)
А если им всем повесить одно событие ?


 
mrcat ©   (2003-09-02 14:54) [2]

TActionList


 
DmS   (2003-09-02 14:54) [3]

напиши вспомогательную программку для модификации исходников

1. находит обработчик OnClick кнопки например по структуре .Button1 Click(Sender : TObject)
2. пропускает сл. строчку (там begin)
3. вписывает имя функции логирования
4. не забудь в функции проверить Sender на принадлежность к типу кнопок (if Sender is TButton и тд)


 
mrcat ©   (2003-09-02 14:55) [4]

сорри, не понял вопрос


 
PVOzerski ©   (2003-09-02 14:55) [5]

>А если им всем повесить одно событие ?
Можно даже перебором Controls[] в ран-тайме. Присваивать свой OnClick, из которого потом вызывать первоначальный (его можно, например, в Tag временно закинуть).


 
{bas} ©   (2003-09-02 15:15) [6]

>>PVOzerski © (02.09.03 14:55) [5]
Не совсем понял.
Если присвоить им одно и то-же событие, то откуда узнать, что была за процедура до этого?? Да и некоторые реакции на нажатие сделаны через TActionList. Да и ТАГ может быть занят чем либо еще служебным.


 
Skier ©   (2003-09-02 15:18) [7]


> Если присвоить им одно и то-же событие, то откуда узнать,
> что была за процедура до этого??

А это зачем ?


 
Calm ©   (2003-09-02 15:19) [8]


> Есть готовое приложение с множеством( тысячью) кнопок

Класс!!!


 
{bas} ©   (2003-09-02 15:29) [9]

>> Skier © (02.09.03 15:18) [7]
>> А это зачем ?
Ну как я узнаю, что вызывать в этой общей процедуре после логирования.
У меня есть кнопки, у которых на событие онКлик есть уже обработчик. Как я понял вы предлагаете присвоить им новое событие(в кот. логируется все), а старое вызывать из него. Я не прав?? поясните тогда, что вы называете общим событием.

>> Calm © (02.09.03 15:19) [8]
У тебя наверное одна кнопка в приложении - SHUTDOWN. Я угадал??


 
PVOzerski ©   (2003-09-02 15:30) [10]

>Если присвоить им одно и то-же событие, то откуда узнать, что была за процедура до этого?? Да
Так ее-то (точнее, адрес кода) я и предлагал скинуть в tag. Можно и без Tag"a обойтись, даже, пожалуй, лучше. Заводим array of record acontrol:tObject;oldOnClick:tNotifyEvent)end; длиной в количество control"ов, кидаем туда значения контролов и их старые обработчики onClick, из нового обработчика через сравнения Sender"а с полями acontrol элементов массива находим нужный старый обработчик. IMHO, можно и более быстрые способы напридумывать, только лень :^)


 
Skier ©   (2003-09-02 15:33) [11]

>{bas} © (02.09.03 15:29)
А никак нельзя заменить классы TSpeedButton, TBitButton, TButton на
свои, в которых будет перекрыт Click ? Так проще будет...


 
{bas} ©   (2003-09-02 15:51) [12]

>> Skier © (02.09.03 15:33) [11]
Да я согласен, что это вариант, но мне он не подходит, так как уж очень много надо будет менять и в .пас и .дфм. Если только опять писать интерпритатор.


 
Skier ©   (2003-09-02 15:55) [13]

>{bas} © (02.09.03 15:51)

> так как уж очень много надо будет менять и в .пас и .дфм.

Немного.
Достаточно использовать диалог "Replace" в *.pas и в текстовом представлении *.dfm


 
{bas} ©   (2003-09-02 16:20) [14]

Спасибо за идеи. Подумаю как сделать.



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
14-48758
Dimka Kolbaskin
2003-08-26 10:12
2003.09.15
Масло


3-48468
NorthMan
2003-08-22 19:15
2003.09.15
Народ, почему при работе с фоксовыми таблицами вылезает


6-48676
MegaVolt
2003-04-25 15:53
2003.09.15
Как найти зашаренные ресурсы с $ например Temp$ ?


6-48671
Тих
2003-07-13 00:06
2003.09.15
MSXML через прокси


1-48521
elf
2003-09-02 15:15
2003.09.15
сравнение строк