Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Вопрос по использованию Enter вместо кнопки

Автор: 1147 17.06.2009 2:57

В компонент Edit вводятся какие-то данные. Есть кнопка "Сохранить", после нажатия которой введенные данные сохраняются.
Как сделать чтобы вместо нажатия кнопки, заставить эту функцию выполнять кнопку Enter на клавиатуре?

Автор: sheka 17.06.2009 2:58

передать кнопке фокус.

Автор: 1147 17.06.2009 3:02

а если кнопки вообще нет?

Автор: Unconnected 17.06.2009 3:03

Ну, если я правильно понял, что тебе нужно, то на обработчик OnKeyPress твоего Edit'а вешаешь код:

...
if key=#13 then button1.click; //<---обработчик нажатия на кнопку сохранить
...


И далее в обработчике нажатия кнопки делаешь activecontrol:=edit1;

Добавлено через 1 мин.
А если кнопки нет, то просто пишешь процедуру и уже её вызываешь вместо обработчика нажатия на кнопку.

Автор: 1147 17.06.2009 3:14

не совсем понял где нужно указать: activecontrol:=edit1;

Автор: Unconnected 17.06.2009 15:29

В обработчике нажатия на кнопку, т.е. в button1.click; , или в процедуре, которая выполняет функцию этого обработчика, если кнопки нету.

Автор: 1147 29.06.2009 5:21

вот тут другая проблема теперь возникла: при нажатии Enter, данные сохраняются, тут все нормально. Но при этом издается звук похожий на щелчек. в папке windows->media он называется Windows XP-динь. Совершенно не хочется постоянно слушать этот "динь"!
Почему он издается?? и как устранить его проигрывание??

Автор: volvo 29.06.2009 13:55

Цитата
Почему он издается?? и как устранить его проигрывание??
Чтоб ответить на второй вопрос, сначала надо ответить на первый. А чтоб ответить на первый - надо видеть код, и знать, на каких данных у тебя это все происходит... Показывай код, а то гадать на кофейной гуще как-то неинтересно...

Автор: 1147 30.06.2009 16:33

В событии onkeypress dbedita находится следующий код:

if key=#13 then bitbtn6.click;
Все, в dbedite больше ничего не изменено. Дальше, в bitbtn, на которую переключается фокус при нажатии Enter в событии onclick:
begin
activecontrol:=dbedit5;
activecontrol:=dbedit6;
activecontrol:=dbedit7;
activecontrol:=dbedit8;

if form5.xd.Modified then
form5.xd.Post;
dbedit5.SetFocus;
form5.xd.Insert;
Label1.Caption := IntToStr(xd.RecordCount);
end;


Автор: volvo 30.06.2009 17:02

Цитата
В событии onkeypress dbedita находится следующий код:
Этот код, конечно, передает управление в bitbtn6.click, но само нажатие на Enter кто отменять будет? Из-за него у тебя и звуки появляются...
if key=#13 then begin
key := #0; bitbtn6.click;
end;
Вот так, например...

Автор: 1147 30.06.2009 19:06

smile.gif Звук исчез. Спасибо!