Si colocas un form con cuatro botones (SpeedButton por el tema del foco), uno para la tecla (debería ser igual para todas las teclas, pero cambiando el caracter), uno para borrar, uno para la flecha izquierda y otro para la derecha, con algo así debería bastar:
Código Delphi
[-]
procedure TForm1.BotonTeclaClick(Sender: TObject);
var
i:Integer;
ch:Char;
pos:Integer;
Str1, Str2:String;
begin
Randomize;
i := Trunc(Random(25)) + 65;
ch := Char(i);
i := Edit1.SelStart;
pos := Edit1.SelStart;
Str1 := Copy(Edit1.Text, 1, pos);
Str2 := Copy(Edit1.Text, pos + 1, Length(Edit1.Text));
Edit1.Text := Str1 + ch + Str2;
Edit1.SelStart := i + 1;
end;
procedure TForm1.BotonBorrarClick(Sender: TObject);
var
pos:Integer;
Str1, Str2:String;
i:Integer;
begin
i := Edit1.SelStart;
pos := Edit1.SelStart;
Str1 := Copy(Edit1.Text, 1, pos - 1);
Str2 := Copy(Edit1.Text, pos + 1, Length(Edit1.Text));
Edit1.Text := Str1 + Str2;
Edit1.SelStart := i - 1;
end;
procedure TForm1.BotonFlechaIzquierdaClick(Sender: TObject);
begin
Edit1.SelStart := Edit1.SelStart - 1;
end;
procedure TForm1.BotonFlechaDerechaClick(Sender: TObject);
begin
Edit1.SelStart := Edit1.SelStart + 1;
end;