|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.10.2008, 20:56 | #1 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
"Две" onMouseMove у одного компонента. Как?
Здравствуйте.
Существует процедура onMouseMove у объекта Image1. В ней очень большой код, настолько что выполнение его отстает от действий пользователя, одним словом подтормаживает. Возникла необходимость разгрузить данный код, вынести часть кода (в котором вся проблема) в другую процедуру, которая будет переодически выполнятся (как onMouseMove пока пользователь двигает мышкой), при чем одновременно с основной процедурой onMouseMove. Как бы две процедуры onMouseMove у одного компонента. Каким образом можно решить этот вопрос? Экспериментировал с Таймером, но это не дало желаемых результатов. Задумался о создании Image2 и вписать этот код туда, и вызывать процедуру Image2MouseMove в Image1MouseMove, но не знаю на сколько это рационально и как вызывать одну процедуру через другую... Заранее благодарен!
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 27.10.2008 в 21:01. |
27.10.2008, 21:11 | #2 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Цитата:
Код:
|
||
27.10.2008, 21:16 | #3 |
Регистрация: 27.10.2008
Сообщений: 3
|
Просто создание дополнительной процедуры никак не скажется на времени выполнения...
В вашем случае скорее всего следует использовать второй поток в котором выполнять "проблемную" часть кода, НО тут есть пара моментов: к компонентам лучше в дополнительном потоке не обращаться так как они не расчитаны на работу в нескольких потоках, ну а если надо всётаки работать с компонентами в обоих потоках делать это надо осторожно |
27.10.2008, 21:22 | #4 | |
Регистрация: 27.10.2008
Сообщений: 3
|
Цитата:
Другой вопрос насколько оптимизированны там эти действия... Зачем читать книги? На форумах есть всё что нужно! Да и статей в инете полно... |
|
27.10.2008, 21:35 | #5 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
|
|
27.10.2008, 21:42 | #6 |
Регистрация: 27.10.2008
Сообщений: 3
|
новички не знающие как часто она вызывается)
|
27.10.2008, 22:03 | #7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
chandrasecar, резче двигайте мышью, процедура будет реже вызываться )))
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
27.10.2008, 22:07 | #8 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Нет, ну если уж приспичило, можно ввести критерий. Допустим, процедура вызывается, если мышь прошла после предыдущего вызова не менее, чем 10 пикселов по горизонтали и/или 10 по вертикали...
А потоки не спасут. (если кто понимает принципы организации многозадачности) Последний раз редактировалось mihali4; 27.10.2008 в 23:02. |
27.10.2008, 22:52 | #9 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Благодарю, xkor! Потоки - это интересно. Если не сложно, подскажите, как создать два параллельных потока, которые будут порождаться событием Image1.onMouseMove?
Заранее благодарен!
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 27.10.2008 в 22:56. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++, препроцессор, как из "int" сделать "char"? | Максай | Помощь студентам | 3 | 05.09.2008 08:16 |
сделать окно "открыть","сохранить как" | blackstersl | Общие вопросы Delphi | 1 | 24.08.2008 10:31 |
Две программы на "Файлы" | vitekbest | Помощь студентам | 2 | 23.03.2008 18:59 |
Как "динамически" использовать "DLL" | Air | Общие вопросы Delphi | 7 | 11.12.2007 21:55 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |