Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: CL | DM;

Вниз

Как заставить TEdit не генерить звуковой сигнал при включенном обработчике нажатий клавиш.   Найти похожие ветки 

 
voronkov   (2001-12-18 12:27) [0]

Утомил этот трабл и не знаю как бороться. В TEdit использую обработчик нажатий клавиш OnKeyDown. Ловлю нажатия клавиш типа Enter, Escape и прочих. После нажатия таких клавиш звучит звуковой сигнал. Если стоит звуковая карта, то сигнал из набора звуковой схемы, если не стоит, то работает динамик компьютера. Пользователи воют, я сижу с ними, вою тоже. Лезть внутрь компьютеров и отрубать динамики кажется мне неспортивным. Как это затоптать?


 
Anatoly Podgoretsky   (2001-12-18 12:34) [1]

Key:=#0


 
Anatoly Podgoretsky   (2001-12-18 12:36) [2]

Извини ошибка, думал об OnKeyPress


 
Виктор Щербаков   (2001-12-18 12:42) [3]

А как быть с OnKeyDown? Недавно была такая же проблема.
Пришлось использовать RichEdit.


 
Владислав   (2001-12-18 12:58) [4]

Так какие проблемы?
Нужно добавить OnKeyPress и Key:=#0;


 
Teacher   (2001-12-18 13:02) [5]

Обрабатываю OnKeyUp, ничего не делаю кроме присвоения #0 при получении кодов, обрабатываемых в OnKeyDown.


 
Виктор Щербаков   (2001-12-18 13:04) [6]

to Владислав ©
Из хэлпа:
Keys that don"t correspond to an ASCII Char value (Shift or F1, for example) don"t generate an OnKeyPress event.


 
Владислав   (2001-12-18 13:06) [7]

> Виктор Щербаков © (18.12.01 13:04)

Да, но они, слава богу, и не "пищат".


 
Виктор Щербаков   (2001-12-18 13:09) [8]

Попробуй Ctrl + S например :)


 
Владислав   (2001-12-18 13:19) [9]

> Виктор Щербаков © (18.12.01 13:09)

Не "пищит", однако?

Еще что-нибудь придумаешь?

:)))


 
voronkov   (2001-12-18 13:19) [10]

Пробовал вставлять в OnKeyUp key := 0, проблема осталась. Ну елы-палы, что типа делать?


 
Dmitriy(new)   (2001-12-18 14:29) [11]

TMyEdit= class(TEdit)
...
procedure KeyPress(var Key: Char); override;
...
End;

procedure TMyEdit.KeyPress(var Key: Char);
begin
case key of
#1..#12,#14..#26,#28..#255:;
else key:=#0;
End;
End;


и не "пищат".


 
cdaDmitriy   (2001-12-18 15:22) [12]

work ?


 
panov   (2001-12-18 15:26) [13]

Попробуй вот так:
procedure TfDocEdit.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #27) then
begin
Key:=#0;
if (fDocEdit.ActiveControl is TEdit) then
begin
TEdit(fDocEdit.ActiveControl).Text := vPrevValue;
TEdit(fDocEdit.ActiveControl).Modified := False;
end;
end;
if (Key = #13) then
begin
Key:=#0;
Perform(WM_NEXTDLGCTL,0,0);
end;
end;


 
panov   (2001-12-18 15:27) [14]

И не забудь выставить
TfDocEdit.KeyPreview := True;


 
cdaDmitriy   (2001-12-18 15:32) [15]

>> panov ©
забыл KeyPreview:=true;
и вопрос что ты будешь делать если на форме /проекте 10 ..n TEdit ?

забыл ООП


 
voronkov   (2001-12-18 16:06) [16]

Чуваки, всем спасибо. Не пищит комбинация с
case key of
#13: begin
...
end;
else key:=#0;
End;
в OnKeyPress, правда немного непривычно работать с этим событием, так как привык работать с константами типа VK_...
К сожалению я пишу программу с большим объемом ручного ввода и зачастую разные TEdit должны по разному реагировать на одни и теже клавиши, в противном случае можно пользоваться событиями формы. Так что ООП тут не спасает отца русской демократии.


 
panov   (2001-12-18 16:12) [17]

>cdaDmitriy © (18.12.01 15:32)
Каждому прописываешь имя этого обработчика.


 
cdaDmitriy   (2001-12-18 16:15) [18]

> panov © забыл ООП
делаешь новый компонент ( T..Edit ) один раз

procedure KeyPress(var Key: Char); override;

и его используешь



Страницы: 1 вся ветка

Текущий архив: 2002.01.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
1-22157
Flagman
2001-12-20 13:55
2002.01.08
Найти два возврата каретки подряд.


3-21975
Dr. Web
2001-12-06 09:12
2002.01.08
создание базы Interbase из программы


14-22354
Nemesis
2001-10-08 13:02
2002.01.08
Мобила


14-22361
Nikolay
2001-11-08 00:17
2002.01.08
Да...............................


1-22032
Socol
2001-12-18 10:01
2002.01.08
Монипуляция чисел.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский