Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2012, 07:53   #1
Dmitriy90
 
Регистрация: 06.04.2012
Сообщений: 7
По умолчанию отследить нажатие Enter

Нужно сделать так чтобы после нажатия enter текст из edit попадал в одну из ячеек stringgrid.
вот код который я написал:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
   
    procedure edit1Keydown(Sender: TObject; var Key: word);
    procedure Button2Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  s:string;


implementation

{$R *.dfm}

procedure TForm1.edit1keydown(Sender: TObject; var Key: word);

begin

 if key=VK_RETURN then
  begin
   edit1.SetFocus;
   stringgrid1.cells[1,1]:=edit1.text;

  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

end.
не могу понять почему программа не видит нажатия enter. в свойствах формы keypreview выставлено на true. Скажите что я не так делаю

Последний раз редактировалось Stilet; 16.04.2012 в 14:55.
Dmitriy90 вне форума Ответить с цитированием
Старый 16.04.2012, 08:05   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Поставили свойство keypreview равным true, ловите в событии TForm1.FormKeyDown.
EUGY вне форума Ответить с цитированием
Старый 16.04.2012, 08:17   #3
Dmitriy90
 
Регистрация: 06.04.2012
Сообщений: 7
По умолчанию

не ловится. когда keypreview в false и пытаюсь ловить в TForm1.Edi1KeyDown тоже ничего не происходит. пробовал даже записать значение edit1 в строковую переменную объявленную глобально. переменная пуста. программа просто не заходит в процедуру так как не видит нажатие кнопки.
Dmitriy90 вне форума Ответить с цитированием
Старый 16.04.2012, 09:15   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

У меня "ловится" и в ячейку стринггрида попадает содержимое Edit.
Значение KeyPreview формы - по-барабану. И при True, и при False одинаково.
А по-другому и быть не может, т.к. это свойство отвечает только за получение формы событий от клавы (True - прежде активного компонента) или не будет получать (False). Активный компонент всегда получает клавиатурные события.
Вложения
Тип файла: zip Proj.zip (233.4 Кб, 18 просмотров)
Прик вне форума Ответить с цитированием
Старый 16.04.2012, 09:21   #5
Dmitriy90
 
Регистрация: 06.04.2012
Сообщений: 7
По умолчанию

Прик
Ваш пример работает, спасибо. Вот только я не вижу разницы между моим кодом и вашим. Буду писать на основе вашего исходника)
Dmitriy90 вне форума Ответить с цитированием
Старый 16.04.2012, 09:30   #6
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Активный компонент всегда получает клавиатурные события.
А табуляция?
EUGY вне форума Ответить с цитированием
Старый 16.04.2012, 10:04   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Да, Tab получает только форма, но и это можно обойти, о чем вы, разумеется, хорошо осведомлены.
Но в теме речь не о клавише Tab.
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OnKeyPress не видит нажатие Enter ЛамерВлад Общие вопросы Delphi 9 24.03.2012 00:49
Нажатие Enter Кристинка89 Общие вопросы C/C++ 2 18.05.2011 18:40
Повторное нажатие Enter _-Re@l-_ Общие вопросы Delphi 10 28.01.2011 23:48
Нажатие Enter Alana Общие вопросы Delphi 4 27.10.2010 14:31
Нажатие Enter Screame Microsoft Office Excel 1 01.11.2009 17:02