关于键盘输入的问题(100分)

  • 主题发起人 主题发起人 hwj_hit
  • 开始时间 开始时间
H

hwj_hit

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SpeedButton做了一个计算器的程序, 实现了+, -, *, / . 但不知如何实现从键盘输入, 我想做成微软那样的, 当敲击键盘时, 程序界面相应的按钮产生响应.
 
在CAPIION里输入
&y
然后你在敲y试试看
 
我试过了
&6也行的
你只要按六就行了
 
我刚才试过了,好像不行的,你可以看看微软的计算器, 我是想实现小键盘的输入.
 
我把我的按钮实现部分的程序贴出来:
procedure TForm1.SpeedButtonNumberClick(Sender: TObject);
begin
if sender = SpeedButton0 then // 点击了 '0' 按钮
CurrentCalcType.AddChar('0') // 实现添加数字: 0
else if sender = SpeedButton1 then
CurrentCalcType.AddChar('1')
else if sender = SpeedButton2 then
CurrentCalcType.AddChar('2')
else if sender = SpeedButton3 then
CurrentCalcType.AddChar('3')
else if sender = SpeedButton4 then
CurrentCalcType.AddChar('4')
else if sender = SpeedButton5 then
CurrentCalcType.AddChar('5')
else if sender = SpeedButton6 then
CurrentCalcType.AddChar('6')
else if sender = SpeedButton7 then
CurrentCalcType.AddChar('7')
else if sender = SpeedButton8 then
CurrentCalcType.AddChar('8')
else if sender = SpeedButton9 then
CurrentCalcType.AddChar('9');


self.ShowNumber; // 实现在 Memo 中显示出来
end;

怎样实现当敲击键盘时, 以上语句产生响应.
 
1、将表单的keypreview属性置为True;
2、将每一个SpeedButton.Hint设为SpeedButton.Caption
例如:把“6”这个按钮的HINT设为"6";
    把“+”这个按钮的HINT设为"+";
......
3、在表单的OnKeypress事件中输入以下代码
var i:integer;
begin
if key=#13 then
SpeedButton回车.click
else
for i=0 to controlcount-1 do
if controls.hint=key then
begin
SpeedButtonNumberClick(controls);
exit;
end;
end;
此代码已调试通过,请散分。
 
1、将表单的keypreview属性置为True;
2、将每一个SpeedButton.Hint设为SpeedButton.Caption
例如:把“6”这个按钮的HINT设为"6";
    把“+”这个按钮的HINT设为"+";
......
3、在表单的OnKeypress事件中输入以下代码
var i:integer;
begin
if key=#13 then
SpeedButton回车.click
else
for i=0 to controlcount-1 do
if controls.hint=key then
begin
(controls as TSpeedButton).onclick(controls); //----------改个地方更方便
exit;
end;
end;
此代码已调试通过,请散分。
 
请问: 海无崖, 其中的controlcount?
 
该窗体中可视控件个数
 
因为代码在表单的onkeypress事件中,就可以直接用controlcount,它表示form.controlcount,
翻译为中文就是表单上放的控件数量
 
ControlCount := Self.ComponentCount;
 
谢谢! 但是没能实现窗体上的相应按钮的相应动作. 请注意查收你们的积分数.
 
接受答案了么?可以买单了哈。:)
 
嘿嘿, 兄弟散分了. 请查收 [:D][8D]
 
后退
顶部