что имеем : D6, PaintBox, MouseMove у этого PaintBox
Жму на ЛЕВУЮ (это критично так как с Правой таких проблем нет) кнопку
во время движения жму на CTRL проверяю Shift на [ssLeft, ssCtrl] короче все верно
и меняю курсор и ноль эмоций.
причем менять этот долбаный курсор менял отовсюду и по маус муву и из потока отслеживая GetKey пока кнопка нажата не изменяется как только отпускаю то все ок — меняется... только мне нужно чтобы он менялся пока она нажата причем туда-сюда в зависимости от нажатой клавиши
в пошаговом режмме меняется а на экране нет
с правой повторюсь все ОК
Screen.Cursor проблему решил но возникли другие

из за этого...
почитал конфу там у чувака в Билдере такие же проблемы были но там ее не решили (он тоже на Screen->Cursor пересел )
Заранее благодарен за ответ, Дмитрий
Здравствуйте dimushkin, Вы писали:
D>что имеем : D6, PaintBox, MouseMove у этого PaintBox
D>Жму на ЛЕВУЮ (это критично так как с Правой таких проблем нет) кнопку
D>во время движения жму на CTRL проверяю Shift на [ssLeft, ssCtrl] короче все верно
D>и меняю курсор и ноль эмоций.
D>причем менять этот долбаный курсор менял отовсюду и по маус муву и из потока отслеживая GetKey пока кнопка нажата не изменяется как только отпускаю то все ок — меняется... только мне нужно чтобы он менялся пока она нажата причем туда-сюда в зависимости от нажатой клавиши
D>в пошаговом режмме меняется а на экране нет
D>с правой повторюсь все ОК
D>Screen.Cursor проблему решил но возникли другие
из за этого...
D>почитал конфу там у чувака в Билдере такие же проблемы были но там ее не решили (он тоже на Screen->Cursor пересел )
D>Заранее благодарен за ответ, Дмитрий
Попробуй вызывать Application.ProcessMessages сразу после смены курсора. Возможно, нажатие Ctrl приводит к впаданию в режим захвата мыши (Mouse Capture) и сообщения смены курсора не обрабатываются приложением.
Здравствуйте Sinclair, Вы писали:
S>Здравствуйте dimushkin, Вы писали:
D>>что имеем : D6, PaintBox, MouseMove у этого PaintBox
D>>Жму на ЛЕВУЮ (это критично так как с Правой таких проблем нет) кнопку
D>>во время движения жму на CTRL проверяю Shift на [ssLeft, ssCtrl] короче все верно
D>>и меняю курсор и ноль эмоций.
D>>причем менять этот долбаный курсор менял отовсюду и по маус муву и из потока отслеживая GetKey пока кнопка нажата не изменяется как только отпускаю то все ок — меняется... только мне нужно чтобы он менялся пока она нажата причем туда-сюда в зависимости от нажатой клавиши
D>>в пошаговом режмме меняется а на экране нет
D>>с правой повторюсь все ОК
D>>Screen.Cursor проблему решил но возникли другие
из за этого...
D>>почитал конфу там у чувака в Билдере такие же проблемы были но там ее не решили (он тоже на Screen->Cursor пересел )
D>>Заранее благодарен за ответ, Дмитрий
S>Попробуй вызывать Application.ProcessMessages сразу после смены курсора. Возможно, нажатие Ctrl приводит к впаданию в режим захвата мыши (Mouse Capture) и сообщения смены курсора не обрабатываются приложением.
Насколько я помню, Mouse Capture в Delphi происходит
всегда проверяется очень просто — кидаем на форму TLabel, в котором, в событии OnMouseMove отображаем координаты, которые прилетают в событие. Даже если мышь уйдет за пределы Label'а (при нажатой на Label'е левой кнопке мыши), координаты будут меняться! (по крайней мере, так было в D3, D4, D5, D6) и наоборот — жмем мышь в другом месте, наводимся на Label — ноль эмоций...
А Application.ProcessMessages — не помагает. что делать в данном случае — не могу сказать — копать надо...
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте Mike, однако, Вы писали:
MО>Здравствуйте Sinclair, Вы писали:
S>>Здравствуйте dimushkin, Вы писали:
D>>>что имеем : D6, PaintBox, MouseMove у этого PaintBox
D>>>Жму на ЛЕВУЮ (это критично так как с Правой таких проблем нет) кнопку
D>>>во время движения жму на CTRL проверяю Shift на [ssLeft, ssCtrl] короче все верно
D>>>и меняю курсор и ноль эмоций.
D>>>причем менять этот долбаный курсор менял отовсюду и по маус муву и из потока отслеживая GetKey пока кнопка нажата не изменяется как только отпускаю то все ок — меняется... только мне нужно чтобы он менялся пока она нажата причем туда-сюда в зависимости от нажатой клавиши
D>>>в пошаговом режмме меняется а на экране нет
D>>>с правой повторюсь все ОК
D>>>Screen.Cursor проблему решил но возникли другие
из за этого...
D>>>почитал конфу там у чувака в Билдере такие же проблемы были но там ее не решили (он тоже на Screen->Cursor пересел )
D>>>Заранее благодарен за ответ, Дмитрий
S>>Попробуй вызывать Application.ProcessMessages сразу после смены курсора. Возможно, нажатие Ctrl приводит к впаданию в режим захвата мыши (Mouse Capture) и сообщения смены курсора не обрабатываются приложением.
MО>Насколько я помню, Mouse Capture в Delphi происходит всегда проверяется очень просто — кидаем на форму TLabel, в котором, в событии OnMouseMove отображаем координаты, которые прилетают в событие. Даже если мышь уйдет за пределы Label'а (при нажатой на Label'е левой кнопке мыши), координаты будут меняться! (по крайней мере, так было в D3, D4, D5, D6) и наоборот — жмем мышь в другом месте, наводимся на Label — ноль эмоций...
MО>А Application.ProcessMessages — не помагает. что делать в данном случае — не могу сказать — копать надо...
Решение есть !!! в той же ситуации с Label'ом пишем в обработчике FormCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.ControlStyle := Label1.ControlStyle - [csCaptureMouse];
end;
И все работает!!! правда при выходе за границы Label'а координаты перестают обновляться...
P.S. спасибо Sinclair за помощь в поисках истины...
Mike, Однако...
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте Hacker_Delphi, Вы писали:
HD>Решение есть !!! в той же ситуации с Label'ом пишем в обработчике FormCreate:
HD>HD>procedure TForm1.FormCreate(Sender: TObject);
HD>begin
HD> Label1.ControlStyle := Label1.ControlStyle - [csCaptureMouse];
HD>end;
HD>
HD>И все работает!!! правда при выходе за границы Label'а координаты перестают обновляться... :shuffle:
HD>P.S. спасибо Sinclair за помощь в поисках истины...
HD>Mike, Однако... :))
СПАСИБО МУЖИКИ, ВЫРУЧИЛИ !!!.