Главная страница
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.041 c
9-48383
Mihey
2003-03-14 18:11
2003.09.15
DelphiX и Alpha - я плакалъ.


3-48420
shnidke
2003-08-24 01:52
2003.09.15
Суммирование значений


1-48577
Стрелок
2003-09-04 09:22
2003.09.15
Список с генерацией


1-48562
SFASS
2003-09-04 13:38
2003.09.15
Тема, как тема


3-48446
DelphiM
2003-08-25 10:27
2003.09.15
Grid