Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 19:20   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Рандомные звуки при наборе текста

Хочу чтобы при наборе текста в TEdit звучали рандомные звуки и при нажатии на Backspace звучал только один специальный звук.
Вот наработки
Код:
...
t: Integer;
...
procedure TForm1.Press;
begin
if Form2.CBMute.Checked then
begin
t:=t+1;
case t of
1: sndPlaySound('type_0', SND_RESOURCE or SND_ASYNC);
2: sndPlaySound('type_1', SND_RESOURCE or SND_ASYNC);
3: sndPlaySound('type_2', SND_RESOURCE or SND_ASYNC);
end;
end;
end;
procedure TForm1.Edit1Press(Sender: TObject; var Key: Char);
begin
Press;
end;

Только тут один не достаток - звуки проигрываются при нажатии первых трёх клавиш на остальные молчит.
Shouldercannon вне форума Ответить с цитированием
Старый 07.01.2010, 19:21   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
If T=4 Then t=1
Сразу после Inc(t);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 07.01.2010, 21:21   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
procedure TForm1.Press;
begin
if Form2.CBMute.Checked then
begin
t:=t+1;
case t of
1: sndPlaySound('type_0', SND_RESOURCE or SND_ASYNC);
2: sndPlaySound('type_1', SND_RESOURCE or SND_ASYNC);
3: sndPlaySound('type_2', SND_RESOURCE or SND_ASYNC);
end;

if t=3 then t:=0;
end;
end;
Минус, проигрывается 1,2,3 1,2,3 1,2,3 при долгом наборе начинает надоедать предсказуемость проигрывания звуков. Как сделать чтобы постоянно по разному проигрывались?
Shouldercannon вне форума Ответить с цитированием
Старый 07.01.2010, 21:36   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

randomize не?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.01.2010, 21:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) добавить звуков побольше (ибо три звука - это маловато!
2) вместо t:=t+1
сделать t := Random(ЧислоЗвуков);
потом, вместо case t вызвать
sndPlaySound('type_'+trim(IntToStr( t)), SND_RESOURCE or SND_ASYNC);

p.s. в начале, при создании формы не забыть вызвать
randomize;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.01.2010, 21:49   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Работает. Теперь остался последний штрих, требуется что при нажатии на Backspace проигрывался только один звук.

Последний раз редактировалось Shouldercannon; 07.01.2010 в 21:55.
Shouldercannon вне форума Ответить с цитированием
Старый 07.01.2010, 22:01   #7
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
procedure TForm1.Press;
begin
If key=#8 then // код клавиши backSpace #8
sndPlaySound('<тип зука, который нужен>', SND_RESOURCE or SND_ASYNC);
else
весь остальной код, что у вас есть
end.
Вот сайт, где есть коды всех клавишь виртуальной клавиатуры в десятичном и шестнадцатиричном варианте:
http://www.realcoding.net/article/view/1857
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 07.01.2010 в 22:36.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 07.01.2010, 22:35   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А конкретнее:
Код:
if key = 8 then
sndPlaySound('filename.', SND_RESOURCE or SND_ASYNC);
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 07.01.2010, 22:37   #9
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Опередили вы меня
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменить запись в наборе DataSet не внося изменение в БД truevoxdei БД в Delphi 10 31.08.2009 15:10
Рандомные помехи в результате запроса MySQL Ivan_32 SQL, базы данных 0 17.07.2009 05:52
Подстановка значений при наборе kopoba БД в Delphi 4 02.06.2009 10:34
Зависание при наборе определенных слов mus-chek Microsoft Office Word 12 01.11.2008 08:20
при ручном наборе некоторые процедуры неработают? zAlexandrz Общие вопросы Delphi 8 10.11.2007 18:43