Закрыть форму по клавише Esc. Как?
 Добавлено: 16.04.2010 10:22:33
Добавлено: 16.04.2010 10:22:33Lazarus 0.9. ОС Windows XP SP3.
Как закрыть форму по нажатию клавиши Esc?
Спасибо.
			Как закрыть форму по нажатию клавиши Esc?
Спасибо.
форум
http://lazarus.freepascal.ru/forum/
http://lazarus.freepascal.ru/forum/viewtopic.php?f=23&t=5745
 Добавлено: 16.04.2010 10:22:33
Добавлено: 16.04.2010 10:22:33 Добавлено: 16.04.2010 11:15:48
Добавлено: 16.04.2010 11:15:48procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
  if Key = #27 then close;
end; Добавлено: 16.04.2010 13:28:16
Добавлено: 16.04.2010 13:28:16procedure TForm1.FormCreate(Sender: TObject);
begin
   KeyPreview := True;
end;
procedure TForm1.FormKeyPress
(Sender: TObject; var Key: Char) ;
begin
   if key = #27 then Close;
end;            Добавлено: 16.04.2010 15:12:12
Добавлено: 16.04.2010 15:12:12procedure TForm2.FormKeyPress(Sender: TObject; var Key: char);
begin
  if Key = #27 then close;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;     
 Добавлено: 16.04.2010 15:37:04
Добавлено: 16.04.2010 15:37:04 Добавлено: 16.04.2010 15:44:15
Добавлено: 16.04.2010 15:44:15KOL48 писал(а):Почему -- мне не понятно. Ткните носом.
  { TForm1 }
  TForm1 = class(TForm)
    procedure FormCreate(Sender:TObject);
    procedure FormKeyPress(Sender:TObject;var Key:char);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender:TObject);
begin
  KeyPreview:=True;
end;
procedure TForm1.FormKeyPress(Sender:TObject;var Key:char);
begin
  if Key=#27 then Close;
end;                 
 Добавлено: 16.04.2010 16:05:08
Добавлено: 16.04.2010 16:05:08 Добавлено: 16.04.2010 17:21:26
Добавлено: 16.04.2010 17:21:26amateur писал(а):Вторая форма диалоговое окно (автосоздаваемое). В первой форме кнопка и обработчик:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 if Form2.ShowModal=mrCancel then Exit;
 ...
end; Добавлено: 19.04.2010 09:38:49
Добавлено: 19.04.2010 09:38:49v-t-l писал(а):И не надо никакой KeyPreview и onKeyPress.
 Добавлено: 19.04.2010 11:02:44
Добавлено: 19.04.2010 11:02:44 .
 . Добавлено: 19.04.2010 14:47:27
Добавлено: 19.04.2010 14:47:27vertu писал(а):устанавливаешь свойство формы KeyPreview := True и создаешь обработчик события onKeyPress из одной строки:
- Код: Выделить всё
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
if Key = #27 then close;
end;
 Добавлено: 19.04.2010 16:46:03
Добавлено: 19.04.2010 16:46:03v-t-l писал(а):Если на форме есть ActionList, то можно добавить Action, выставить его ShortCut='Esc', а в обработчике OnExecute написать Close.
Или есть меню, то к пункту "Выход".
 Добавлено: 03.06.2010 16:44:09
Добавлено: 03.06.2010 16:44:09v-t-l писал(а):...добавить Action, выставить его ShortCut='Esc', а в обработчике OnExecute написать Close.