Tecnobyte Informática

Delphi - Teclado e Mouse

Como simular a vírgula através do ponto do teclado numérico?

{ Na seção "private" do Form principal acrescente: }
procedure AppMsg(var Msg: TMsg; var Handled: Boolean);

{ Na seção "implementation" acrescente (troque TForm1 para
  o nome do seu form principal): }
procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.Message = WM_KEYDOWN then
    if Msg.wParam = 110 then
      Msg.wParam := 188;
end;

{ No evento "OnCreate" do form principal, coloque: }
Application.OnMessage := AppMsg;

{ Uma segunda alternativa (José Geraldo - ES):
  Coloque o código abaixo no evento OnKeyPress do componente 
  onde se quer a conversão (Edit, DBEdit, etc). Neste caso
  a conversão funcionará apenas neste componente (óbvio). }

  if Key = '.' then Key = DecimalSeparator;

Observações

Na primeira alternativa, sempre que for pressionado o ponto do teclado numérico (da direita do teclado), este será convertido para vírgula, independentemente do controle que estiver em foco. Já na segunda, o ponto pode ser de qualquer lugar do teclado.