![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здраствуйте =)
незнаю как можно сделать чтоб, выделить копмонент TImage и перемещать его,не мышкой,а именно стрелками клавиатуры. у этого компонента нету свойств Onkey ,да и на форме его выделить не получается.возможно ли както это реализовать? задача у меня такая,на форме несколько квадратных имейджев,и надо стрелками выбрать нужный,и шифт+стрелки перемещать его. ну с самой задачей надеюсь сам справлюсь, а как выделить обьект и событие onkeypress прикрутить к нему? Последний раз редактировалось Snake22, 13.03.2011 в 16:48. |
#2
|
||||
|
||||
![]() как вариант - запоминать в глобальную переменную. Событие нажатия клавиши можно перехватить:
Код:
procedure wmkeydown(var msg: TWMKeyDown); message WM_KEYDOWN; ... case msg.CharCode of VK_LEFT:; VK_RIGHT:; ... — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
![]() Если правильно понял вопрос то так:
Код:
Var T: Array [0..1] of TPoint; // К-во Imageй. X,Y,N: Integer; procedure TForm1.Image1Click(Sender: TObject); begin N:= 0; end; procedure TForm1.Image2Click(Sender: TObject); begin N:= 1; end; //И т.д. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ssShift in Shift Then begin Case Key of VK_LEFT: Dec(T[N].X, 5); VK_RIGHT: Inc(T[N].X, 5); VK_UP: Dec(T[N].Y, 5); VK_DOWN: Inc(T[N].Y, 5); end; (Form1.Components[N] As TImage).Left:= T[N].X; (Form1.Components[N] As TImage).Top:= T[N].Y; end; end; If end Then begin; |
#4
|
|||
|
|||
![]() Ага спасибо AND REY, твой способ работает.
но столкнулся с проблемой,если на форме нет ни одной кнопки,едита и т.д. то активной становиться форма и событие onkeydown работает. но если есть хоть одна кнопка,едит и тд. то активны получаються они,то есть курсор на них наведен,и на события формы программа уже не реагирует. что можно сделать? |
#5
|
||||
|
||||
![]() FormN.KeyPreview?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
|||
|
|||
![]() Цитата:
а через WM_KEYDOWN не подскажете как сделать? гуглём чтото не находит как узнать какая клавиша нажата,там тока как нажать клавишу с помощью wm_keydown както так...непонимаю |
#7
|
||||
|
||||
![]() Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |