delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收
今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究。
一、直接上代码示例
1、屏蔽应用Terminated ;如果按了虚拟键:返回键; 如果按了物理菜单键
procedure TfmxTestGYListview1.FormKeyUp(
Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
var
CanUse: Boolean;
begin
if Key = vkHardwareBackthen // 如果按了虚拟键:返回键
begin
Key := 0; //:屏蔽应用Terminated
// CanUse := true; Key := GoBack(CanUse); // 调用返回功能,包括退出功能
Image_0201Click(Sender);
end;
if Key = vkMenuthen // 如果按了物理菜单键
begin
if PopupMenu.Visible = true then
HidePopupMenu
else
Image_0202Click(Sender); // 显示快捷菜单
Key := 0; //:屏蔽应用Terminated
exit;
end;
end;
2、控制TEdit和TMemo的虚拟键盘
二、取数原理
System.UITypes.pas 第197行-384行
const
{ Virtual Keys, Standard Set }
vkLButton = $01; { 1 }
vkRButton = $02; { 2 }
vkCancel = $03; { 3 }
vkMButton = $04; { 4 }
vkXButton1 = $05; { 5 }
vkXButton2 = $06; { 6 }
vkBack = $08; { 8 }
vkTab = $09; { 9 }
vkLineFeed = $0A; { 10 }
vkClear = $0C; { 12 }
vkReturn = $0D; { 13 }
vkShift = $10; { 16 }
vkControl = $11; { 17 }
vkMenu = $12; { 18 }
vkPause = $13; { 19 }
vkCapital = $14; { 20 }
vkKana = $15; { 21 }
vkHangul = $15; { 21 }
vkJunja = $17; { 23 }
vkFinal = $18; { 24 }
vkHanja = $19; { 25 }
vkKanji = $19; { 25 }
vkConvert = $1C; { 28 }
vkNonConvert = $1D; { 29 }
vkAccept = $1E; { 30 }
vkModeChange = $1F; { 31 }
vkEscape = $1B; { 27 }
vkSpace = $20; { 32 }
vkPrior = $21