|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.11.2006, 19:54 | #1 |
Пользователь
Регистрация: 12.11.2006
Сообщений: 57
|
что нужно сделать, чтобы при нажатии кнопки запускалась процедура
Привет всем, помогите ответить на вопрос, желательно исходник. Суть проста: допустим при нажать кнопки на клаве "m", выподало сообщение, допустим "привет" (при помощи ShowMessage).
Заранее спасибо. >>Примечание<<Не ругайтесь, если это очень просто, я Delphi всего неделю изучаю! Поэтому помогите простому челу.
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
Последний раз редактировалось mager; 12.11.2006 в 19:55. Причина: ошибка в тексте |
12.11.2006, 20:01 | #2 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
а форма должна быть, или просто рабочий стол пустой (твоей программы не видно) и она работает?
|
13.11.2006, 11:07 | #3 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,594
|
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if (key='m')or(key='ь') then ShowMessage('hgfhjgfh') end; Для получения этого кода, найди в инспекторе объектов OnKeyPress... |
13.11.2006, 19:12 | #4 |
Пользователь
Регистрация: 12.11.2006
Сообщений: 57
|
Спасибо, что помогли, а как при помощи этой же процедуры, при нажатии на "стрелку влево", на клаве, влево двигается картинка, Name=Image1. Только тут нужна процедура OnKeyDown. Не знаю поняли меня или нет, поэтому объясню нормальным языком:
Зажал кнопку "Стрелка влево" и с интервалом в 1 секунду, картинка смещается вдево на две единицы. Как я понял, надо создать переменную положения картинки, при нажатии на кнопку, к этой переменной каждую секунду прибавлять по две единицы. Уф!!! Кажеться объяснил. Я смысол понимаю, но вот как это реализовать не знаю, Заранее спасибо.
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
|
13.11.2006, 19:39 | #5 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,594
|
OnKeyDown - это когда кнопка опускаеться вниз. рекомендую для нового хода нажимать на кнопку ещё раз, для тебя это будет проще...
для картинок используй image, координаты там легко определяються, как для любого объекта. |
13.11.2006, 19:42 | #6 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Ставь два обработчика: OnKeyDown и OnKeyUp На первый влючаем таймер, на второй выключаем.
var x: byte; procedure TForm1.OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case key of 37: x := -1; //кнопка влево 39: x := 1; //кнопка вправо end; if not Timer 1.Enabled then Timer1.Enabled := True; end; procedure Timer1.Timer(Sender : TObject) begin Image1.left := Image1.left + 10*x; end;
Познавая других, мы познаем себя.
С'est la vie... |
13.11.2006, 19:47 | #7 | |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Цитата:
VK_UP - вверх VK_DOWN - вниз VK_LEFT - влево VK_RIGHT - вправо Для твоего случая (влево): procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if (key=VK_LEFT) then Image1.left:=Image1.left-2; //картинка сдвинется на 2 пикселя влево end; Не забудь, что картинка может "выехать" за пределы формы. |
|
14.11.2006, 19:13 | #8 |
Пользователь
Регистрация: 12.11.2006
Сообщений: 57
|
Ещё раз спасибо, но у меня не получилось это реализовать, использую Борландовский делфи7 , вот код который ввел:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); var x: Integer; begin x:=Image1.Left; if key=VK_LEFT Then<здесь останавливается курсор при проверке begin Image1.Left:=x-2; end; end; Я использовал код Zetrixa, чуть его изменил, но не пашет, пишет: "Incompatible types"
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
Последний раз редактировалось mager; 14.11.2006 в 19:16. Причина: ошибка |
14.11.2006, 19:28 | #9 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
для этой функции тебе прийдется использовать мои значения :
37: //кнопка влево 38: //кнопка вверх 39: //кнопка вправо 40: //кнопка вниз
Познавая других, мы познаем себя.
С'est la vie... |
14.11.2006, 19:37 | #10 |
Пользователь
Регистрация: 12.11.2006
Сообщений: 57
|
SuperVisor объясни пожалуйста, вставить, где key=VK_LEFT, вместо VK_LEFT - 37или38или39...
Незнание человека не повод, чтобы над ним издеваться или смеяться, все мы чего-то не знали или не знаем...
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать программу, чтобы она запускалась везде? | grenles | Общие вопросы C/C++ | 3 | 11.06.2008 21:10 |
Как сделать так,чтобы при нажатии на кнопку выполнялась процедура? | Bolgarin | Общие вопросы Delphi | 10 | 03.06.2008 23:48 |
Как сделать так,чтобы программа запускалась с включением компьютера? | InseR | Общие вопросы Delphi | 24 | 12.02.2008 18:55 |
Есть менюшка. Нужно сделать чтобы курсор был самой строкой. | Небесный | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 03.10.2007 19:46 |
Как сделать, чтобы программа запускалась один раз, т.е. повторно запустить нельзя??? | Kamikadze_666 | Безопасность, Шифрование | 7 | 31.07.2007 08:34 |