Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 479

/ вопрос решён /

Здравствуйте, уважаемые эксперты!
На форме есть Edit2, в исходном состоянии невидимый. По нажатию кнопки он становится видимым, вожу текст, и по Enter хочу провести обработку. Ничего не происходит, а выдеётся короткий "Бум!" . Раньше было : по первому нажатию кнопки активируется Edit2, при последующих выполнялась обработка, перенесена без изменения в обработчик Enter. Работало нормально.
Вот что значит перерыв в дельфинировании. Умом пораскинул бы, да нечем ...

Приложение:
  1. {{code}}
  2. procedure TForm1.Edit2Enter(Sender: TObject);
  3. var srvstr,str1 : string ; i,ni,ll,ix,iy : integer ;
  4. M9 : array [0..8] of integer ;
  5. begin
  6. srvstr := Edit2.Text ; ll := Length (srvstr);
  7. If ll < 9 then srvstr := srvstr + ' ' ;
  8. for i := 1 to 9 do
  9. begin
  10. if (srvstr[i]<'1') or (srvstr[i]>'9') then srvstr[i] := ' ' ;
  11. str1 := Copy(srvstr,i,1) ;
  12. ll := Ord(srvstr[i]) and $F ; ni := (i-1)*9 + InpLine ;
  13. ix := Coord[ni].X ; iy := Coord[ni].Y ;
  14. Image1.Canvas.TextOut(ix-7,iy-9,str1); Mas81[ni] := ll
  15. end ;
  16. Edit2.Text := '' ; N19 := InpLine + 1 ; NToChar() ; Edit2.SetFocus ;
  17. Inc (InpLine) ; if InpLine>8 then
  18. begin mode := 0 ; N19 := 1 ; NToChar() end ;
  19. end ;
  20. {{/code}}
  21.  


Толяныч Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Толяныч (статус: 4-ый класс)
Вопрос отправлен: 23 сентября 2013, 14:05
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, Толяныч!
Нажатия кнопок клавиатуры обрабатываются в событии OnKeyPress.

Приложение:
  1. procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
  2. begin
  3.  
  4. ShowMessage('Enter!');
  5. end;


Ответ отправил: DNK (статус: Студент)
Время отправки: 23 сентября 2013, 16:13
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 24 сентября 2013, 12:12; участников в обсуждении: 3.
Толяныч

Толяныч (статус: 4-ый класс), 23 сентября 2013, 14:40 [#1]:

Ещё : при нажатии кнопки АКТИВИРОВАТЬ EDIT2 сразу влетает в обработчик Edit2.Enter. Так надо? И как с этим бороться?
Вадим К

Вадим К (статус: Академик), 23 сентября 2013, 15:14 [#2]:

читаем документацию по onEnter

Цитата:

Use the OnEnter event handler to cause any special processing to occur when a control becomes active.


То есть, он сработает, когда edit станет активным. Видимо Вы спутали имя кнопки Enter с событием.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 23 сентября 2013, 16:08 [#3]:

Цитата (Толяныч):

и по Enter хочу провести обработку.

Событие OnKeyPress использовать надо тебе, юный падаван...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 23 сентября 2013, 19:10 [#4]:

Да, век живи ... Буду учиться дальше, что мне ещё остаётся, старому павиану :-(
Спасибо всем!

23 сентября 2013, 19:19: Статус вопроса изменён на решённый (изменил автор вопроса — Толяныч)

23 сентября 2013, 20:33: Вопрос перемещён из тематического раздела Delphi » Взаимодействие с Windows в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

Толяныч

Толяныч (статус: 4-ый класс), 23 сентября 2013, 21:11 [#5]:

Странно... Работает нормально, но звук "Бум!" остался, как будто оно чем-то недовольно.

begin
if Key=#13 then
begin
srvstr := Edit2.Text ; ll := Length (srvstr);
...... ( дальше как в первом варианте )
Т.е. все символы не #13 обрабатываются по умолчанию, стандартным образом, т.е. заносятся в Edit2.Text ? Чего тогда оно возмущается ?
Такое у меня бывает, когда на экране только рабочий стол, никакая прога не запущена, а кот топчется по клаве. Может, очищать буфер клавиатуры ? А как ?
min@y™

min@y™ (статус: Доктор наук), 24 сентября 2013, 08:18 [#6]:

Цитата (Толяныч):

Работает нормально, но звук "Бум!" остался, как будто оно чем-то недовольно.

Попробуй так:
if Key=#13 then
begin
  Key:= #0;
  srvstr := Edit2.Text ; ll := Length (srvstr);
  ...... ( дальше как в первом варианте )
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 24 сентября 2013, 12:12 [#7]:

min@y™, ещё раз гран мерси ! Помогло, замолчало.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.