Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
{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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
4-48829
jenya_d1
2003-07-15 08:37
2003.09.15
Выбор имени сервера в сети


1-48646
yuliya
2003-08-28 07:34
2003.09.15
String


1-48621
MakNik
2003-09-02 17:51
2003.09.15
Заменить DBEdit на DBText


7-48812
Geka
2003-06-30 11:03
2003.09.15
Разница в часах между Now и какой-то датой в прошлом


14-48741
Steven
2003-08-27 17:54
2003.09.15
ModelMaker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский