0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
1

Горячие клавиши

15.07.2009, 19:44. Показов 12817. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте уважаемые программисты!

У меня просьба, я вылаживаю исходники небольшой программки (делал не я) и хочу чтобы вы сделали в этой программе горячую кнопку. Чтобы при нажатии кнопки "H" появлялась другая форма (Form 1). И чтобы эта появившаяся форма была поверх всех окон, я может быть наглею но пожалуйста помогите и если можно распишите комментарии в исходнике чтобы я мог понять что и как.

Заранее спасибо не имеющее границ!
Вложения
Тип файла: rar ishodnik.rar (206.9 Кб, 85 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2009, 19:44
Ответы с готовыми решениями:

Горячие клавиши
Как сделать что бы при нажатии клавиш Ctrl+Z выполнялось a:=a+1;

Горячие клавиши
Вот такая проблемка. Нужно мне настроить горячие клавиши на "Exit" - esc, "About" - f1, "Open" -...

Горячие клавиши
Как с помощью HotKey сделать назначение клавиш, к примеру включение/отключение звука в системе на...

Горячие клавиши
Всем привет. Есть вопрос - можно ли в Delphi использовать комбинации клавиш Alt+1, Alt+2, Alt+3,...

26
Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
15.07.2009, 20:49 2
Лучший ответ Сообщение было отмечено как решение

Решение

Нетрудно, исходник править не буду. Смотри: создаешь обработчик события OnKeyDown Формы2 и в нем пишешь:
Delphi
1
2
3
4
5
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=ord('H') then Form1.Visible:=true;
end;
Типа, если нажата клавиша 'H', то показать Форму1.

Когда будешь компилить, Delphi спросит тебя включить ли Форму1 в проект. Нажмешь "Yes" и ещё раз запустишь на компиляцию.
4
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
15.07.2009, 20:54 3
я может быть наглею но пожалуйста помогите и если можно распишите комментарии в исходнике чтобы я мог понять что и как.
слишком мягко сказано))))

В событии нажатия на кнопку (FormKeyDown) пишем следующий код
Delphi
1
2
      if((Key=ord('H')))then
      begin
букву можно поставить любую. После begin пишете все, что вам нужно. например,
Delphi
1
Form1.show;
1
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
15.07.2009, 21:06 4
P.S. Лови
MP3_Player.zip
2
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
15.07.2009, 21:29  [ТС] 5
СПАСИБО ВАМ ВСЕМ ОГРОМНОЕ! Я БЛАГОДАРЕН ОЧЕНЬ СИЛЬНО СИЛЬНО!

Добавлено через 9 минут 32 секунды
Drongo

пожалуйста можно тебя еще попросить? Можно так сделать чтобы это было не тока когда активна имено Form 2, а даже например если я где-то в какой-то папке нахожусь(но программа эта включена) то при нажатии на кнопку серавно появлалась Form1
0
Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
15.07.2009, 21:42 6
Тут тоже нетрудно: кидаешь таймер на Форму2, на него ставишь время поменьше (интервал=10, например) а в обработчике пишешь:
Delphi
1
if GetAsyncKeyState(72)=-32767 then Form1.Show;
Теперь где бы ты не нажал клавишу 'H', выскочит Форма1.
1
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
15.07.2009, 22:08  [ТС] 7
Получилось! А теперь нужно сделать чтобы он выскакивал поверх всех окон и пока его не закроешь он всегда был поверх всех окон.

P.S. он это проигрыватель
0
Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
15.07.2009, 22:25 8
В настройках формы установи свойство FormStyle равным fsStayOnTop. Теперь эта форма будет всё время поверх. Можно это cделать и внутри программы, прописав что-то вроде:
Delphi
1
Form1.FormStyle := fsStayOnTop;
2
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 09:44  [ТС] 9
Все теперь помог! вроде бы вопросов больше не имею!

Добавлено через 28 минут 30 секунд
Появился еще один вопрос...как теперь сделать что при нажатии опять кнопки "H" форма опять праталась

Добавлено через 10 часов 40 минут 54 секунды
Появился еще один вопрос...как теперь сделать что при нажатии опять кнопки "H" форма опять праталась

И еще вопросик....

Уже в форме самого Плеера(Form1) как сделать что при нажатии кнопки "/" началось воспроизведение музыки?

Добавлено через 2 минуты 34 секунды
Появился еще один вопрос...как теперь сделать что при нажатии опять кнопки "H" форма опять праталась

И еще вопросик....

Уже в форме самого Плеера(Form1) как сделать что при нажатии кнопки "/" началось воспроизведение музыки?
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
16.07.2009, 09:54 10
Delphi
1
2
3
4
5
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=ord('H') then begin Form2.Visible:=true; form1.close; end;
end;
вроде так

Добавлено через 1 минуту 55 секунд
ну по логике то поди уже можно догадаться как сделать
0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 09:57  [ТС] 11
Да как бы пробывал, да что-то вот такой вот плеер что неполучается у меня(чтобы запускалась музыка при кнопке "/")

А вот для скрытия опять формы 1 сейчас попробую
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
16.07.2009, 10:00 12
а плеер сделан как отдельная форма или это и есть форма 1
0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 10:29  [ТС] 13
Это и есть форма 1, можешь скачать исходничек он мало весит
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
16.07.2009, 10:32 14
для запуска как я понимаю надо делать тоже в форме один , то есть подобно закрытию только запуск воспроизведения для символа / , а ты поди делал это все в форме 2???
0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 10:33  [ТС] 15
Да конечно я не такой олень чтобы делать ето в форме 2 догадался что в форме 1) там оно под SpeedButton настроено и када я делаю для KeyFormDown ничего не происходит
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
16.07.2009, 14:29 16
для слеша (/) прописывай так
Delphi
1
2
if key= vk_Divide
  then ....
1
Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
16.07.2009, 16:01 17
А ещё есть нюанс: нужно обрабатывать KeyDown не формы, а ЛистБокса, потому что фокус именно на нем, тогда всё будет работать. Вот код, это при нажатии '/', который на малой цифровой клавиатуре, его код 111, я помню. Если тебе другой слэш нужен, то поищи сам его код или воспользуйся предыдущим советом Drongo.
Delphi
1
2
3
4
5
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key=111 then SpeedButton1.OnClick(self);
end;
1
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 16:30  [ТС] 18
Очень важный нюанс! Спасибо огромное! Буду пробовать!

Добавлено через 27 минут 8 секунд
Теперь также нужно сделать чтобы эта кнопка "/" (111) всегда работала даже когда окно не активно
0
Эксперт С++
3189 / 870 / 39
Регистрация: 29.12.2008
Сообщений: 952
16.07.2009, 16:36 19
Опять таймер и функция GetAsyncKeyState. Только параметр не 72, а 111. Вот инфа по этой функции, прочитай внимательно что она делает:
http://www.cyberguru.ru/progra... page5.html
1
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 13
16.07.2009, 18:57  [ТС] 20
Цитата Сообщение от mamedovvms Посмотреть сообщение
Delphi
1
2
3
4
5
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=ord('H') then begin Form2.Visible:=true; form1.close; end;
end;
вроде так

Добавлено через 1 минуту 55 секунд
ну по логике то поди уже можно догадаться как сделать

Неполучилось, серавно не сворачивается при еще раз нажатии H

Добавлено через 13 минут 58 секунд
А где можно найти список кодов кнопок?
0
16.07.2009, 18:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2009, 18:57
Помогаю со студенческими работами здесь

Горячие клавиши
Подскажите пожалуйста как мне назначить какоето действие на горячие клавиши : F1,F2..ну и тд..

Горячие клавиши
Как сделать так, чтобы, например, по нажатию нескольких клавиш открывалось диалоговое окно...

Горячие клавиши
Как прописать вызов горячих клавиш? Например, вызов печати на CTRL+P или поиска на CTRL+F? ...

Горячие клавиши
Здравствуйте скажите как можно реализовать горячие клавиши без таймера нужно что бы допустим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru