|
Вопрос # 6 479/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
На форме есть Edit2, в исходном состоянии невидимый. По нажатию кнопки он становится видимым, вожу текст, и по Enter хочу провести обработку. Ничего не происходит, а выдеётся короткий "Бум!" . Раньше было : по первому нажатию кнопки активируется Edit2, при последующих выполнялась обработка, перенесена без изменения в обработчик Enter. Работало нормально.
Вот что значит перерыв в дельфинировании. Умом пораскинул бы, да нечем ...
Приложение: Переключить в обычный режим- {{code}}
- procedure TForm1.Edit2Enter(Sender: TObject);
- var srvstr,str1 : string ; i,ni,ll,ix,iy : integer ;
- M9 : array [0..8] of integer ;
- begin
- srvstr := Edit2.Text ; ll := Length (srvstr);
- If ll < 9 then srvstr := srvstr + ' ' ;
- for i := 1 to 9 do
- begin
- if (srvstr[i]<'1') or (srvstr[i]>'9') then srvstr[i] := ' ' ;
- str1 := Copy(srvstr,i,1) ;
- ll := Ord(srvstr[i]) and $F ; ni := (i-1)*9 + InpLine ;
- ix := Coord[ni].X ; iy := Coord[ni].Y ;
- Image1.Canvas.TextOut(ix-7,iy-9,str1); Mas81[ni] := ll
- end ;
- Edit2.Text := '' ; N19 := InpLine + 1 ; NToChar() ; Edit2.SetFocus ;
- Inc (InpLine) ; if InpLine>8 then
- begin mode := 0 ; N19 := 1 ; NToChar() end ;
- end ;
- {{/code}}
-
 |
Вопрос задал: Толяныч (статус: 4-ый класс)
Вопрос отправлен: 23 сентября 2013, 14:05
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, Толяныч!
Нажатия кнопок клавиатуры обрабатываются в событии OnKeyPress.
 |
Ответ отправил: 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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 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™, ещё раз гран мерси ! Помогло, замолчало.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|