Показать полную графическую версию : OnKeyPress
khvalera
06-07-2003, 23:26
Такой вопрос, почему при использованию OnKeyPress событие наступает после второго нажатия клавиши.
Prisoner
07-07-2003, 02:23
Глупый пример
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Form1.Caption:='666';
end;
работает корректно. Чуть конкретнее плиз.
khvalera
10-07-2003, 20:00
Чуть конкретнее.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key=#13 then
begin
if not Table2.Locate('Nazva',Edit1.Text,[]) then
Table2.Edit;
Table2.Insert;
Table2.Fields[1].AsString:=Edit1.Text;
Edit1.Text:='';
end
else Edit1.Text:='';
vasketsov
10-07-2003, 20:10
В конце Key:=#0 напиши
Добавлено:
Да, работу не гарантирую, потому как не ясно, что тебе надо.
но разницу почувствуешь однозначно.
khvalera
10-07-2003, 20:29
Извини, привел не весь код.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key=#13 then
begin
if not Table2.Locate('Nazva',Edit1.Text,[]) then
if MessageDlg('Òàêî¿ íàçâè íåìàº. Äîäàòè?',
mtConfirmation, [mbYes,mbNo], 0) = mrYes then
begin Table2.Edit;
Table2.Insert;
Table2.Fields[1].AsString:=Edit1.Text;
Edit1.Text:='';
DBEdit1.Enabled:=True;
end
else Edit1.Text:='';
SelectNext(Sender as TWinControl,True,True);
Key:=#0;
end
else
Table2.Locate('Nazva',Edit1.Text,[loCaseInsensitive, loPartialKey]);
В том примере, что ты привел, согласен, все работает нормально.
А здесь поиск в базе данных только после второго вводимого символа.
Prisoner
11-07-2003, 02:18
В F1 сказано: The Key parameter in the OnKeyPress event handler is of type Char; therefore, the OnKeyPress event registers the ASCII character of the key pressed. Keys that don't correspond to an ASCII Char value (Shift or F1, for example) don't generate an OnKeyPress event. Key combinations (such as Shift+A), generate only one OnKeyPress event (for this example, Shift+A results in a Key value of “A” if Caps Lock is off). To respond to non-ASCII keys or key combinations, use the OnKeyDown or OnKeyUp event handlers. Быть может стоит попробывать... хотя бы для того, чтобы заработало ;)
khvalera
Ваще я бы использовал OnKeyDown or OnKeyUp
Prisoner
11-07-2003, 21:59
Spiderman
О чем и написано в F1 :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.