Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > keys


Автор: Rondo 2.5.2006, 21:19
Хелп!
Подскажите пожалуйста как сделать чтобы форма не закрывалась при нажатии Alt+F4  smile  

Автор: Демо 2.5.2006, 21:25
Код

  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure OnWM_SYSCOMMAND(var Message: TMessage); message WM_SYSCOMMAND;
  end;



Код

procedure TForm1.OnWM_SYSCOMMAND(var Message: TMessage);
begin
  if ((Message.WParam and $FFF0) = SC_MINIMIZE) then
  begin
    Application.Minimize;
    Message.Result := 0;
  end
  else inherited;
end;

 

Автор: Rondo 2.5.2006, 21:28
 smile 
А можно это сделать на событии OnKeyPress? 
Типа.. отменить действие? 

Автор: ShadeSt 3.5.2006, 08:29
Событие формы OnClose:
Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;
 

Только при этом она вообще закрываться перестанет. 
Если интересует именно по комбинации клавиш Alt+F4 то ловить кнопки. 

Код

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
    MyCanClose : Boolean;
  public
    { Public declarations }
  end;

.....

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyCanClose := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  MyCanClose := Not ((shift = [ssAlt]) and (key = vk_F4));
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose   := MyCanClose;
  MyCanClose := True;
end;


 

Автор: ~FoX~ 3.5.2006, 09:06
Цитата(Rondo @  2.5.2006,  22:28 Найти цитируемый пост)
А можно это сделать на событии OnKeyPress? 

Нет, а вот по OnKeyDown
Код

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (Key = 115) and (Shift = [ssAlt]) Then Key := 0;
  .......
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)