procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
if Msg.message=WM_KeyDown then
   if msg.wParam=vk_f1 then
     begin
       button1.OnClick(application.Owner);
     end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'a';
end;
很简单得问题,我直接点button1得时候,edit1得内容+a,但是我按f1得时候,edit内容自动加两个a,不知道为什么呢,请高人指点迷津!!!

解决方案 »

  1.   

    以上代碼沒有問題, 檢查你其它地方!!如果也改, 那
    button1.OnClick(Self);但也不關事!
      

  2.   

    我上面得代码使从工程种变化出来得例子,为得就是看看为什么f1就会执行两次操作,然后很简单得界面,就一个按牛核一个edit和一个ApplicationEvents1,请大家帮忙啊!我着急交货呢,处理得是¥,本来的100,变成200了,老板亏死拉 !哈哈
      

  3.   

    Windows 消息发生时会触发Application.OnMessage
     上边那个执行了两次,因为单击时上边事件给激活。执行两次.
    button1.OnClick(application.Owner) 
    再执行一次;
      

  4.   

    不用ApplicationEvents1用FORM的OnKeyDown事件
      

  5.   

    to:爱的眼睛
    代码的确是执行两次,为什么我不清楚,我该成form响应keydown来控制,就解决了,其他的没有问题!!!!