segunda-feira, 28 de novembro de 2011

Enter funcionando como Tab em toda a aplicação

Uses
  Grids
procedure TfrmPri.MudarComEnter(var Msg: TMsg; var Handled: Boolean);
begin
  If not ((Screen.ActiveControl is TCustomMemo) or
  (Screen.ActiveControl is TCustomGrid) or
  (Screen.ActiveForm.ClassName = 'TMessageForm')) then
  begin
  If Msg.message = WM_KEYDOWN then
  begin
  Case Msg.wParam of
  VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0,0);
  VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0);
  end;
  end;
  end;
end;

No evento OnCreate o Form Principal digite a seguinte linha

Application.OnMessage := MudarComEnter;

Descobrir o código ASCII de uma tecla


- Coloque um Label no form (Label1);

- Mude a propriedade KeyPreview do form para true;

- Altere o evento OnKeyDown do form como abaixo:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
begin
   Label1.Caption :=
   Format('O código da tecla pressionada é: %d', [Key]);
end;

Observações

Para testar execute e observe o Label enquanto pressiona as teclas desejadas.

Desabilitar Teclas Ctrl+Alt+Del

Ai vai um codigo que peguei no site da Borland que trava as teclas
(Ctrl+Alt+Del),(Alt+Tab), (Ctrl+Esc)
var
      OldValue : LongBool;
begin
    {liga a trava}
     SystemParametersInfo(97, Word(True), @OldValue, 0);
    {desliga a trava}
     SystemParametersInfo(97, Word(False), @OldValue, 0);
end;