Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   scancode to char (https://www.clubdelphi.com/foros/showthread.php?t=42214)

droguerman 08-04-2007 08:24:52

scancode to char
 
saludos a todos

existe alguna funcion que convierta el scancode de una tecla a su equivalente ASCII o al menos que determine si la tecla pulsada es un caracter??

de antemano gracias

d-hugo 08-04-2007 15:24:16

una forma de hacerlo
 
Una forma un poco burda de detectar si la tecla es un caracter puede lograrse usando el evento onKeyPress con un case. Algo más o menos así:
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case ord(key) of
    65..90: begin
      // entre A y Z mayúscula
    end;
    97..122: begin
      // entre a y z minúscula
    end;
    else begin
      // para el resto
    end;
  end;
end;
Puede que no sea el método más eficiente, pero es relativamente simple de usar, lo único que hay que hacer es buscar los códigos ASCII para las letras que deseas filtrar, pero eso es fácil con el mapa de caracteres de Windows (que por cierto, en el caso de Windows XP da los valores en hexadecimal, pero pueden convertirse fácilmente a decimal con la calculadora científica)

Saludos, Hugo

droguerman 08-04-2007 16:00:46

bueno mas sencillo en ese caso es usar la función chr, lo que preguntaba es si conociendo el scancode de una tecla por ejemplo de 4 en el teclado numerico que está representado en delphi por la constante VK_NUMPAD4 era posible obtener el ascii de 52 (4) o conociendo una tecla cuyo código está representado por VK_SPACE es posible haya el equivalente que es 32.

d-hugo 08-04-2007 17:00:09

Ya te entiendo.
Algo más o menos así:
Código Delphi [-]
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  ascii: byte;
begin
  ascii:=MapVirtualKey(key, 2);
end;
Por cierto, para distinguir si las letras son mayúsculas, minúsculas o están acentuadas, creo que vas a necesitar sumergirte un poco más en las APIs de Windows.

droguerman 08-04-2007 17:46:42

ah que hábil, muchisimas gracias era justo lo que necesitaba :D


La franja horaria es GMT +2. Ahora son las 04:22:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi