|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
День добрый! Вот возникла такая необходимость двинуть указатель мыши посредством mouse move.... но вот беда, данная команда выполняется асинхронно и следующая инструкция в коде выполняется еще до окончания mouse move... как сделать так чтобы выполнение программы приостанавливалось до завершения конкретной инструкцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 11:06 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
FoxPro - однопоточное приложение. Необходимо прилагать специальные усилия, чтобы заставить выполняться команды асинхронно. По умолчанию, это невозможно. Проблема в том, что хотя Вы и дали команду на перемещение мыши, но эта команда не может быть выполнена немедленно, поскольку в данный момент выполняется текущая процедура. Поэтому процесс перемещения мыши откладывается в стек событий. Ставится в очередь на исполнение. И исполняется только после завершения исполнения текущей процедуры. Вам надо как раз заставить выполниться мышиное событие немедленно. Именно что асинхронно. До завершения выполнения текущей процедуры. В старых версиях FoxPro это делалость просто задержкой Код: plaintext 1. 2.
В новых версиях FoxPro попробуйте использовать команду DOEVENTS Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2010, 11:25 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
ВладимирМ, Да, doevents force отрабатывает, но вот дальше .... у меня в коде заместо mouse move ..., mouse click at ....., так вот клик не отрабатывает, тоесть даже если выдать do events после mouse click at .... то прежде чем выполнится click (в обработчике clicka соответствующего объекта есть код) успевает выполниться следующая инструкция do FORm... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 14:16 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
А Вы не можете напрямую обратится к методу Click() объекта вне процесса перемещения мыши? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
В этом случае перемещение мыши вообще не нужно. Соответственно, нет необходимости использовать DOEVENTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2010, 14:56 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
ВладимирМ, Ок попробуем... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2010, 08:17 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
ВладимирМ, Попробовал, - не получилось .... Вернулся к идее с MOUSE ... У меня собственно задача следующая: есть treeview, необходимо чтобы при нажатии на правую кнопку мыши (по узлу) происходило в действительности нажатие левой кнопки. Эт для того чтобы и правой и левой выбирался узел. В обработчике mousedown, если кнопка была правая я пишу MOUSE AT CLICK и DO EVENTS FORCE. Что самое замечательное, далее (в коде обработчика mouse down идет DO FORM ..., которая модальная и которая при появлении закрывает область того самого treeview... В итоге, получается что в 50% случаев все отрабатывает нормально, а в других 50% происходит нажатие на кнопки уже той формы что вызывается после do events force ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2010, 13:21 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
_usa__83_, Усе, малость подумал, все решилось - код обработчика MOUSEDOWN и CLICK перенес в MOUSEUP и все так как хотелось, при нажатии левой - просто выбирается узел, при нажатии правой - вызывается форма... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2010, 13:33 |
|
Mouse move асинхронное выполнение
|
|||
---|---|---|---|
#18+
Если бы Вы сразу описали задачу, а не выбранный Вами способ решения, то все решилось бы еще быстрее. Для выбора узла в TreeView надо не мышиные события "дергать", а использовать идентификацию узла по координатам. Это делается через метод TreeView.HitTest(). Сделайте поиск в данном форуме по ключевым словам TreeView и HitTest. Найдете много интересного. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2010, 17:25 |
|
|
start [/forum/topic.php?fid=41&msg=36496085&tid=1585532]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 379ms |
total: | 656ms |
0 / 0 |