Lazarus 0.9. ОС Windows XP SP3.
Как закрыть форму по нажатию клавиши Esc?
Спасибо.
Модератор: Модераторы
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
if Key = #27 then close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
end;
procedure TForm1.FormKeyPress
(Sender: TObject; var Key: Char) ;
begin
if key = #27 then Close;
end;
procedure TForm2.FormKeyPress(Sender: TObject; var Key: char);
begin
if Key = #27 then close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
KOL48 писал(а):Почему -- мне не понятно. Ткните носом.
{ 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;
amateur писал(а):Вторая форма диалоговое окно (автосоздаваемое). В первой форме кнопка и обработчик:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Form2.ShowModal=mrCancel then Exit;
...
end;
v-t-l писал(а):И не надо никакой KeyPreview и onKeyPress.
vertu писал(а):устанавливаешь свойство формы KeyPreview := True и создаешь обработчик события onKeyPress из одной строки:
- Код: Выделить всё
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
if Key = #27 then close;
end;
v-t-l писал(а):Если на форме есть ActionList, то можно добавить Action, выставить его ShortCut='Esc', а в обработчике OnExecute написать Close.
Или есть меню, то к пункту "Выход".
v-t-l писал(а):...добавить Action, выставить его ShortCut='Esc', а в обработчике OnExecute написать Close.
Вернуться в Обучение Free Pascal
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4