Personalizando el TTouchKeyboard

Chris Bensen es el encargado de las características Touch, Multi-Touch y Gestos presentes en Delphi 2010 y ahora nos entrega algún código que nos permite personalizar el teclado en pantalla para aplicaciones Touch.

Según las propias palabras de Chris (y mi traducción libre), en su post Hacking TTouchKeyboard part I, leemos:

El TTouchKeyboard es un teclado en pantalla bastante flexible que soporta múltiples distribuciones del teclado, pero que viene de fábrica solamente con el teclado numérico y un teclado estándar para una gran cantidad de idiomas. Como crear estas distribuciones ha sido un misterio, hasta ahora.

A continuación, algo de código. El primer trozo lista todas las distribuciones de teclado disponibles. Una distribución, en este caso, es un recurso, cuyo nombre contiene la cadena KEYBOARD.

procedure GetKeyboardLayoutNames(ANames: TStrings);

  function EnumResNames(Module: HMODULE; ResType, ResName: PChar;
    Nothing: Pointer): Integer; stdcall;
  const
    sResourceName = 'KEYBOARD';
  begin
    if Pos(sResourceName, ResName) > 0 then
      LayoutNames.Add(ResName);
    Result := 1;
  end;

begin
  LayoutNames := TStringList.Create;
  try
    EnumResourceNames(HInstance, RT_RCDATA, @EnumResNames, 0);
    ANames.Clear;
    ANames.AddStrings(LayoutNames);
  finally
    FreeAndNil(LayoutNames);
  end;
end;

Una vez se tiene el nombre de la distribución que se quiere utilizar, puede cargarse con este otro código:

function LoadLayout(const LayoutName: string): TVirtualKeyLayout;
var
  Stream: TResourceStream;
  TempStream: TStream;
begin
  Result := nil;
  Stream := TResourceStream.Create(HInstance, LayoutName, RT_RCDATA);
  try
    Result := TVirtualKeyLayout.Create;
    Result.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

En una segunda entrega (Hacking TTouchKeyboard part II), el bueno de Chris además nos muestra como iterar por la estructura, almacenar y recuperar una distribución del teclado en un archivo XML, en el ejemplo Guardar una distribución de TTouchKeyboard

2 Respuestas a Personalizando el TTouchKeyboard

  1. Gracias, como puedo usar la funcionalidad de touchKeyboard, podrias adicionar un ejemplo

    • Ricardo, no entiendo bien tu pregunta, pues es tan sencillo como botar el control en un formulario y ya funciona, si fueses mas específico con lo que buscas, quizás pueda echarte un cable. Un saludo.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s