![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
![]()
Здравствуйте.
Существует процедура onMouseMove у объекта Image1. В ней очень большой код, настолько что выполнение его отстает от действий пользователя, одним словом подтормаживает. Возникла необходимость разгрузить данный код, вынести часть кода (в котором вся проблема) в другую процедуру, которая будет переодически выполнятся (как onMouseMove пока пользователь двигает мышкой), при чем одновременно с основной процедурой onMouseMove. Как бы две процедуры onMouseMove у одного компонента. Каким образом можно решить этот вопрос? Экспериментировал с Таймером, но это не дало желаемых результатов. Задумался о создании Image2 и вписать этот код туда, и вызывать процедуру Image2MouseMove в Image1MouseMove, но не знаю на сколько это рационально и как вызывать одну процедуру через другую... Заранее благодарен!
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 27.10.2008 в 21:01. |
![]() |
![]() |
![]() |
#2 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Цитата:
Код:
|
||
![]() |
![]() |
![]() |
#3 |
Регистрация: 27.10.2008
Сообщений: 3
|
![]()
Просто создание дополнительной процедуры никак не скажется на времени выполнения...
В вашем случае скорее всего следует использовать второй поток в котором выполнять "проблемную" часть кода, НО тут есть пара моментов: к компонентам лучше в дополнительном потоке не обращаться так как они не расчитаны на работу в нескольких потоках, ну а если надо всётаки работать с компонентами в обоих потоках делать это надо осторожно |
![]() |
![]() |
![]() |
#4 | |
Регистрация: 27.10.2008
Сообщений: 3
|
![]() Цитата:
Другой вопрос насколько оптимизированны там эти действия... Зачем читать книги? На форумах есть всё что нужно! Да и статей в инете полно... |
|
![]() |
![]() |
![]() |
#5 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 27.10.2008
Сообщений: 3
|
![]()
новички не знающие как часто она вызывается)
|
![]() |
![]() |
![]() |
#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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#8 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Нет, ну если уж приспичило, можно ввести критерий. Допустим, процедура вызывается, если мышь прошла после предыдущего вызова не менее, чем 10 пикселов по горизонтали и/или 10 по вертикали...
А потоки не спасут. (если кто понимает принципы организации многозадачности) Последний раз редактировалось mihali4; 27.10.2008 в 23:02. |
![]() |
![]() |
![]() |
#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 |