Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/76: Рейтинг темы: голосов - 76, средняя оценка - 4.61
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
1

Закрытие формы по нажатию Escape

22.06.2010, 21:05. Показов 14914. Ответов 27
Метки нет (Все метки)

Возможно ли закрытие формы по нажатию ESC, в независимости от того, на каком компоненте сейчас находится курсор?

НЕ прокатывает:
Delphi
1
2
3
4
procedure TF_Review.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then F_Review.Close;
end;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2010, 21:05
Ответы с готовыми решениями:

Открытие и закрытие формы по нажатию
Есть авторизация пользователя. Нужно что бы если верный пароль, то открывал форму 6, а форму 5...

Закрытие формы по нажатию Esc
нужно закрыть форму по escape procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; ...

Как остановить цикл по нажатию Escape
Есть бесконечный цикл. В этом цикле то минимизируются, то максимизируются разные окна (много окон)....

Как отловить закрытие формы по нажатию на крестик в правом верхнем углу формы
Обычный обработчик не катит: нужно закрыть форму в процессе работы программы

27
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
22.06.2010, 22:37 2
единственное что приходит на ум, это выделить все компоненты на форме и в событии на OnKeyPress выбрать функцию FormKeyPress
0
176 / 145 / 21
Регистрация: 07.11.2009
Сообщений: 591
22.06.2010, 23:57 3
Grusha, все нормально работает
Delphi
1
2
3
4
5
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_ESCAPE then Form1.Close;
end;
1
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
23.06.2010, 00:07  [ТС] 4
necroslider, от усталости плохо соображаю, сделала так:
Delphi
1
2
3
4
5
procedure TF_ReviewOboznUl.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_ESCAPE then F_ReviewOboznUl.Close;
end;

не прокатывает...

может у меня с виндой что?
0
176 / 145 / 21
Регистрация: 07.11.2009
Сообщений: 591
23.06.2010, 00:11 5
может забыл в свойствах поставить?
Delphi
1
form1.KeyPreview:=true;
1
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
23.06.2010, 00:17  [ТС] 6
Цитата Сообщение от necroslider Посмотреть сообщение
может забыл в свойствах поставить?
Код Delphi
1
form1.KeyPreview:=true;
это где нужно поставить? в инспекторе объектов? А если в КОДЕ , то где? в контексте приведи, пожалуйста
0
176 / 145 / 21
Регистрация: 07.11.2009
Сообщений: 591
23.06.2010, 00:19 7
инспекторе объектов
либо
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.KeyPreview:=true;
end;
0
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
23.06.2010, 00:40  [ТС] 8
necroslider, где ошибка ?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
unit ReviewOboznUl;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
 
type
  TF_ReviewOboznUl = class(TForm)
    LabelName: TLabel;
    LabelKod: TLabel;
    EditObozn: TEdit;
    ButtonExit: TButton;
    EditKodObozn: TEdit;
    procedure ButtonExitClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
          Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  F_ReviewOboznUl: TF_ReviewOboznUl;
 
implementation
 
uses DM;
 
{$R *.DFM}
 
 
procedure TF_ReviewOboznUl.FormCreate(Sender: TObject);
begin
F_ReviewOboznUl.KeyPreview:=true;
end;
 
 
procedure TF_ReviewOboznUl.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_ESCAPE then F_ReviewOboznUl.Close;
end;
 
end.
0
176 / 145 / 21
Регистрация: 07.11.2009
Сообщений: 591
23.06.2010, 00:51 9
Grusha, да вроде все верно...
Вот пример тебе приложил, попробуй. Даже не знаю почему твой код не пашет...
Вложения
Тип файла: rar vk_esc_close.rar (158.2 Кб, 106 просмотров)
1
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
26.06.2010, 18:00  [ТС] 10
у меня Delphi 5 ... других вариантов не вижу...

из твоей программки код полностью скопировала вставила в пустую форму в новый проект - не пашет...
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
26.06.2010, 18:05 11
не пашет прога или имеено нажатие клавиши Escape, если второе, то это скорей всего из-за того что надо брать событие не keyup а keydown...
0
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
26.06.2010, 18:09  [ТС] 12
Vas-e-na,программка, которую сделал necroslider - работает. Но если код перетаскиваю в чистый проект - запускается, но по нажатию ESC не закрывается.
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
26.06.2010, 18:11 13
покажи код или скинь, посмотрим чё не так...
0
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
26.06.2010, 18:21  [ТС] 14
Vas-e-na, первая программка, которую сделал necroslider - она работает.

Вторая моя - полностью скопированный код, только пришлось убрать //Variants// из строки

Delphi
1
2
uses    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

поскольку на него ругался мой Delphi 5.
Вложения
Тип файла: rar vk_esc_close.rar (158.2 Кб, 19 просмотров)
Тип файла: rar 003.rar (129.0 Кб, 21 просмотров)
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
26.06.2010, 18:30 15
всё замечательно, НО простым копированием функций вы не добъётесь нужного результата:
dfm necroslider:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
object Form1: TForm1
  Left = 463
  Top = 383
  Width = 215
  Height = 155
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnKeyUp = FormKeyUp
  PixelsPerInch = 96
  TextHeight = 13
end
ваша dfm:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
object Form1: TForm1
  Left = 192
  Top = 118
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
end
я думаю разница видна. Вам нужно было функции формы привязать к форме, т.е. в событиях OnCreate и OnKeyUp формы нужно было установить соответсвующие процедуры.

PS чесно говоря ошибка - лóховская...
1
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
26.06.2010, 21:34  [ТС] 16
Цитата Сообщение от Vas-e-na Посмотреть сообщение
PS чесно говоря ошибка - лóховская...
здесь раздел для начинающих, а не для АСов, если что...
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
26.06.2010, 21:53 17
прости, но просто раздела для асов нет...
0
24 / 24 / 2
Регистрация: 17.06.2008
Сообщений: 613
26.06.2010, 22:02  [ТС] 18
Vas-e-na, я имею ввиду, что все кто здесь задают вопросы виновны только в одном - в неопытности, а не в том, что они лохи...
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
26.06.2010, 22:07 19
а я и не говорю что Вы - лох, я говорю что вы лоханулись...
PS вы так не переживайте, и асы иногда лошают...
поэтому давайте закончим этот холивар и оффтопик
0
176 / 145 / 21
Регистрация: 07.11.2009
Сообщений: 591
26.06.2010, 23:37 20
ну ты перекомпиль мой код, пашет?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2010, 23:37

Закрытие формы по нажатию F2
Добрый день! Подскажите пожалуйста, как при этом: protected override void...

Закрытие формы по нажатию button'a
Как закрыть форму по нажатию button'a в DataGridView? Есть Форма1 в которой отображается таблица и...

Закрытие формы по нажатию кнопки
if(AutoExit->Checked == true) { Application->Terminate(); } Unit1 #ifndef Unit1H...

Закрытие формы по нажатию на крестик
Дорогие знатоки, помогите пожалуйста. Можно ли обработать событие закрытие формы именно по нажатию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru