Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   OnKeyPress (http://forum.oszone.net/showthread.php?t=30410)

khvalera 06-07-2003 23:26 208507

Такой вопрос, почему при использованию OnKeyPress событие наступает после второго нажатия клавиши.


Prisoner 07-07-2003 02:23 208508

Глупый пример
Код:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Form1.Caption:='666';
end;

работает корректно. Чуть конкретнее плиз.

khvalera 10-07-2003 20:00 208509

Чуть конкретнее.

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 208510

В конце Key:=#0 напиши

Добавлено:

Да, работу не гарантирую, потому как не ясно, что тебе надо.
но разницу почувствуешь однозначно.

khvalera 10-07-2003 20:29 208511

Извини, привел не весь код.
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 208512

В 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.
Быть может стоит попробывать... хотя бы для того, чтобы заработало ;)

DYURIK 11-07-2003 12:30 208513

khvalera
Ваще я бы использовал OnKeyDown or OnKeyUp

Prisoner 11-07-2003 21:59 208514

Spiderman
О чем и написано в F1 :)


Время: 10:26.

Время: 10:26.
© OSzone.net 2001-