singlepost

Как на DELPHI 7 привязать клавиши к кнопкам..? << На главную или назад  

Всем привет. Возник такой вопросец, даже вопросище. Как можно привязать клавиши к кнопкам. Допустим у меня есть пианино, я хочу чтобы при нажатии клавиши 'z' у меня нажималась кнопка button1. искал в нете ничего так внятно и не понял. Вообщем как там писали я сделал KeyPreview трушным, затем попылся найти OnShortCut что-то там в Проджекте в разделе Application намудрил. и в итоге решил централизованно спросить… Как это делается всё) Заранее большое СПАСИБО. Просто сутки не спал уже, и интересно и непонятно(

28 ответов в теме “Как на DELPHI 7 привязать клавиши к кнопкам..?”

  1. 27
    Demetrius Malyshev ответил:

    :-(

  2. 26
    Дмитрий Уповалов ответил:

    >>> Я просто все данные о клавишах в форму забивал, а на самих кнопках ничего не писал)

    <<< Видимо ты так ничего и не понял.

  3. 25
    Alan Neverage ответил:

    Спасибо разобрался)

  4. 24
    Alan Neverage ответил:

    Я просто все данные о клавишах в форму забивал, а на самих кнопках ничего не писал)

  5. 23
    Demetrius Malyshev ответил:

    Как обещал, вот ссылка //depositfiles.com/files/rx41m1xep
    Твоя задача, как она есть, проект, исходный код и исполняемый файл.
    Посмотри, надеюсь разберешься…

  6. 22
    Дмитрий Уповалов ответил:

    >>>"Вроде бы когда убираю (self) и после Button'a точку ставлю . Прога запускается но ничего не нажимается,(как ранее мне сказали).. Вот а KeyPreview я true сделал.
    Думаю что-то надо в Application добавить, но вот что…"

    <<<"Ну как объяснить студентам, что если программа компилируется, но вместо химической реакции моделирует ядерный взрыв, это значит, что она НЕ работает?"

  7. 21
    Demetrius Malyshev ответил:

    Да что ж у тебя не получается то…
    Попозже свой простой пример через хостинг дам ссылку…
    Посмотришь код, как назначены события, найдешь свои ошибки…

  8. 20
    Константин Смотритель ответил:

    Алан, боюсь, тебе надо идти в группу "Начинающие программисты". Начни с более простых вещей – может быть, даже с ТурбоПаскаля.

    В данном случае компилятор тебе явно сообщает, чего не хватает, и проблем тут нет. Функцию Button1Click тебе необходимо сделать самому. Также, как и self =)) Причём, с точки зрения ООП правильнее сделать Button1.OnClick();вместо Button1Click(self);

    P.S. По поводу "пойду плакать" – это оффтоп, тебе предупреждение. Ещё один оффтоп приведёт к бану =)

  9. 19
    Alan Neverage ответил:

    пойду плакать(

  10. 18
    Alan Neverage ответил:

    Артур это немножко не то)

  11. 17
    Артур Булакаев ответил:

    В названии(Caption) кнопки вроде бы можно просто перед горячяей клавишей поставить амперсанд &

  12. 16
    Alan Neverage ответил:

    Сделал так, как мне сказали… На кнопульку Button1 В событиях OnKeyPress два щелчка ввожу: после
    procedure TForm1.Button1KeyPress(Sender: TObject; var Key: Char);
    begin
    //ввожу данные
    Case Key Of
    'r','R':Button1Click(self);
    end;
    end.
    Ну вот и пишет мол не знаю что такое Button1Click

  13. 15
    Alan Neverage ответил:

    там энд не конечный если, что. Но не из-за энда ошибка… Вроде бы когда убираю (self) и после Button'a точку ставлю . Прога запускается но ничего не нажимается,(как ранее мне сказали).. Вот а KeyPreview я true сделал.
    Думаю что-то надо в Application добавить, но вот что…
    Ух.. Я скоро расплачусь..) Столько времени в пустую, даже интерес пропадает…(

  14. 14
    Alan Neverage ответил:

    Не фига не получается пишет
    [Error] Unit1.pas(33): Undeclared identifier: 'Button2Click'
    он не понимаетэтот клик

  15. 13
    Андрей Кочкин ответил:

    self – указатель на сам объект.

  16. 12
    Андрей Кочкин ответил:

    явное задание экземпляра класса в его методе. Так точнее)

  17. 11
    Alan Neverage ответил:

    Не получилось( а всё-таки что обозначает (self)?

  18. 10
    Alan Neverage ответил:

    Ну если от регистра то по идее мы либо булеановским либо циклом(хотя бред наверно))
    Сейчас с OnKeyDown попробую..)
    Там смысл в том что 2 действия зажатие клавиши и отпускание… по идее всё правильно, ну как ты привёл.. Логично, а дельфя не хочет(

  19. 9
    Demetrius Malyshev ответил:

    Мой вариант работает, иначе не писал бы.
    Button1Click – это обработчик нажатия на кнопку, без точки.
    Обрати внимание, я написал еще: FormKeyPress нужно выбрать в Events> OnKeyPress каждого компонента на форме, получающего фокус ввода. Без этого работать не будет. Перебираешь все компоненты на форме, для каждого из них в выпадающем списке OnKeyPress выбираешь FormKeyPress (в том числе и твои кнопки).

  20. 8
    Demetrius Malyshev ответил:

    Избавиться от влияния регистра можно так.
    Пишешь не <'r' : Button1Click(self);>, а <'r', 'R' : Button1Click(self);>

  21. 7
    Alan Neverage ответил:

    аааааа) сейчас попробую_)

  22. 6
    Alan Neverage ответил:

    А может быть сразу при TForm1.FormCreate запустить эту процедурку?
    просто я ввёл данные те, которые ты написал не получилось
    я тогда так сделал. Всё тоже, что и ты посоветовал, только по другому:

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    case Key of
    'r' : BitBtn3.Click(self); // в данном случае мои кнопульки с картинкой
    'z' : BitBtn4.Click(self);
    end;
    я правда не совсем понял для чего (self) т.е при компиляции ошибку выдаёт, мол что за…?
    И думаю ты имел ввиду перед кликом(Click) точку)
    а то без точки не признаёт..(

  23. 5
    Demetrius Malyshev ответил:

    Вот сейчас состряпал, хотя самому не очень нравится решение…
    Например обработчик (заготовка создается двойным кликом в Events> OnKeyPress):
    procedure TFORM1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    case Key of
    'r' : Button1Click(self);
    'z' : Button2Click(self);
    // и другие кнопки сколько надо
    end;
    end;
    Что не нравится, FormKeyPress нужно выбрать в Events> OnKeyPress каждого компонента на форме, получающего фокус ввода((

  24. 4
    Demetrius Malyshev ответил:

    К тому же зависит от регистра :(
    Лучше наверно OnKeyDown использовать…

  25. 3
    Demetrius Malyshev ответил:

    В теле обработчика OnKeyPress (или KeyUp, KeyDawn) формы задаешь селектор по кодам или символам нужных тебе клавиш. По соответствию прописываешь обработчик Click нужной тебе кнопки. Я бы так решил.

  26. 2
    Alan Neverage ответил:

    А по точнее можно?))

  27. 1
    Alan Neverage ответил:

    Типо массивчик из кнопок?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.