我想在一个CheckBox控件的click事件中调用同一窗体的Combox控件的KeyPress事件,写了如下代码:
procedure Tform1.CheckBox1Click(Sender: TObject);
begin
  comb2.OnKeyPress(f_del,#13);
end;
结果提示:Types of actual and formal var parameters must be identical
应该怎么改才行呢?

解决方案 »

  1.   

    procedure Tform1.CheckBox1Click(Sender: TObject);
    begin
      comb2.OnKeyPress(sender);
    end;
      

  2.   

    to changkai(kai):not enough actual parameters.你恐怕没有测试过吧!to ehom:我让comb2响应回车键盘事件(#13),更新一个datagrid中的数据查询。如果不这样写,用户点击了checkbox后(即选择了另一种排序方式)又必须去选择comb2然后再回车,当然增加一个按钮也是一个方法。你觉得呢?
      

  3.   

    Types of actual and formal var parameters must be identical说的不是很明显吗
    需要变量,你的是常量
      

  4.   

    Types of actual and formal var parameters must be identical  形参与实参必须一致
    不能直接这样调用的,如果真的想调用OnKeyPress事件可以使用消息触发,不过相当麻烦。
    其实可以将你的OnKeyPress事件的处理函数再封装,
    既把 if key=#13 then 
         begin     end;
    里的东东封装成过程。
      

  5.   

    combobox1.OnChange(nil);
    combobox1.OnChange(self );
    combobox1.OnChange(combobox1.NewInstance );
    上面3种方法都可以
      

  6.   

    这个问题是程序组织的问题,你应该这样组织你的程序,假设ComboBox1的OnKeyPress事件处理程序你已经写好,而且是按以下格式书写:
    TForm1.ComboBox1Press(Sender: TObject; var Key: Char);
    begin
      if key = #13 then
        Procedure_xxx;
    end;
    那么,你就可以在CheckBox1的单击事件中这样调用:
    procedure Tform1.CheckBox1Click(Sender: TObject);
    begin
       Procedure_xxx;
    end;
    合理组织程序代码对复用和扩展都有好处。