Конференция "Media" » Перехватить нажатие клавиш для графического объекта
 
  • dan-1608 © (21.06.12 10:40) [0]
    Добрый день, форумчане!

    Подскажите, как реализовать нажатия на клавиши со стрелками, для перемещения графического объекта, нарисованного на канвасе, по полю Image.
    Что то типа OnKeyPress по Image не придумали пока)
  • brother © (21.06.12 11:30) [1]
    > OnKeyPress по Image

    и не надо этого! Достаточно OnKeyPress формы...
  • dan-1608 © (21.06.12 12:02) [2]
    Спасибо за ответ, ну тогда не понятно почему не работает следующее:
    procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char);
    var
     delta: integer; // шаг перемещения при нажатии на клавиатуре
    begin
     delta := Form1.ComboBox2.ItemIndex;
     if Key = #38 then ArrBatar[i].Move(ArrBatar[i],ArrBatar[i].X0,(ArrBatar[i].Y0 - delta)); //Вверх
     if Key = #39 then ArrBatar[i].Move(ArrBatar[i],ArrBatar[i].X0,(ArrBatar[i].Y0 + delta); //Вниз
    end;



    Да при этом: Form2 - дочерняя
  • brother © (21.06.12 13:33) [3]
    http://www.delphisources.ru/forum/showthread.php?t=6688
    какая видимость для i?
  • MBo © (21.06.12 13:35) [4]
    Видимо, активные элементы перехватывают стрелки.
    Фундаментальный труд:
    http://edn.embarcadero.com/article/38447
    Особо для данной задачи важен раздел 5.2.4
  • dan-1608 © (21.06.12 14:01) [5]

    > какая видимость для i

    i количество управляемых граф.объектов,-> глобальная в обоих юнитах определена.
  • dan-1608 © (21.06.12 14:04) [6]

    > Видимо, активные элементы перехватывают стрелки.

    Да так и есть, причем они расположеные на родительской форме (с менюшкой) видно, что Combobox последний котоый использовался начинается управляться именно от этих клавиш.
    Но когда активна Form2 реакция вообще пропадает
  • dan-1608 © (21.06.12 14:54) [7]

    > http://www.delphisources.ru/forum/showthread.php?t=6688


    Не помогает, дабы реакция идет, но ее перебивают более приорететные контролы
  • dan-1608 © (21.06.12 15:14) [8]
    Всем спасибо, получилось благодаря этой работе!

    > http://edn.embarcadero.com/article/38447Особо для данной
    > задачи важен раздел 5.2.4

    Труд хороший, но в английском не силен, поэтому загуглил тему CMDialogKey  которая в разделе 5.2.4 как раз упоминалась и по статье
    http://www.delphisources.ru/pages/faq/base/intercept_tab_in_tedit.html
    перехватил нажатие клавиш со стелками
  • Global (21.06.12 15:15) [9]
    > dan-1608 ©   (21.06.12 14:01) [5]

    глобальная в обоих юнитах определена
    СтранноЮ что одна переменная глобально определена в нескольких (а не в одном) юнитах
  • dan-1608 © (21.06.12 15:53) [10]
    Имел ввиду обьявлена, т.е, скажем при пошаговой компиляции у меня остается i = конкретное валуе (по вотч листу) при переходе компилятора от юниты к юните.
  • fre (09.05.16 10:07) [11]
    Вот ребята перехват клавиш без библиотеки, вложил немного логики и вуаля)))
    https://youtu.be/P1_i7UKqYEk
 
Конференция "Media" » Перехватить нажатие клавиш для графического объекта
Есть новые Нет новых   [134427   +38][b:0][p:0.001]