Главная страница
    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
1-48505
Evgeniy_K
2003-09-02 17:49
2003.09.15
маленькая альтернатива MessageBox


7-48813
kull
2003-07-02 11:27
2003.09.15
Как получить длинный путь к файлу?


3-48453
GekaNaz
2003-08-24 23:33
2003.09.15
Как определить длину строки в триггере


1-48606
lex7
2003-09-03 14:51
2003.09.15
TRichEdit


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





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