Главная страница
    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.48 MB
Время: 0.013 c
1-48574
Алексей Петухов
2003-09-04 08:29
2003.09.15
Открыть документ Word


14-48794
Pindos
2003-08-26 00:23
2003.09.15
Сервер не найден!!!


14-48738
Delphi5.01
2003-08-26 19:47
2003.09.15
Запасный выход


1-48624
новый
2003-09-03 10:38
2003.09.15
Как можно программно разорвать соединение с Internet?


6-48672
eK
2003-07-14 22:32
2003.09.15
Как мне переделать аутентификацию на веб-сервере





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