unit Upublic;interfaceUSES Controls;procedure Pronil(Sender: TObject);   //退出nil
procedure Proenter(sender:Tobject;var Key:char); //回车implementation
procedure Pronil(Sender: TObject);
begin
  sender:=nil;
end;procedure Proenter(sender:Tobject;var Key:char);
begin
  if key=#13 then
  begin
    key:=#0;
    sender.perform(Wm_Nextdlgctl,0,0);
  end;end;
end.编译后提示错误:
[Error] Upublic.pas(23): Undeclared identifier: 'perform'

解决方案 »

  1.   

    加入以后的代码,编译还是通不过:
    unit Upublic;interfaceUSES Controls,qforms,Messages;procedure Pronil(Sender: TObject);   //退出nil
    procedure Proenter(frm:Tform;var Key:char); //回车implementation
    procedure Pronil(Sender: TObject);
    begin
      sender:=nil;
    end;procedure Proenter(frm:Tform;var Key:char);
    begin
      if key=#13 then
      begin
        key:=#0;
        frm.perform(Wm_Nextdlgctl,0,0);
      end;end;
    end.
      

  2.   

    USES Controls, Forms, Messages;
                   ^^^^^ 
      

  3.   

    unit Upublic;interfaceUSES Controls, Forms, Messages;procedure Pronil(Sender: TObject);   //退出nil
    procedure Proenter(sender:Tobject;var Key:char); //回车implementation
    procedure Pronil(Sender: TObject);
    begin
      sender:=nil;
    end;procedure Proenter(sender:Tobject;var Key:char);
    begin
      if key=#13 then
      begin
        key:=#0;
        (sender as Tform).perform(Wm_Nextdlgctl,0,0); //这里注意转换类型。 
      end;end;
    end.
      

  4.   

    (sender as TControl).perform(Wm_Nextdlgctl,0,0);
      

  5.   

    请问我看见过很多人在处理通过回车来控制光标移动还有其他方法 :
    PostMessage(HANDLE,WM_KEYDOWN,vk_TAB,0);
    SendMessage(TForm(Ctrl).Handle, WM_NEXTDLGCTL, 0, 0);
    if Key = #13 then SelectNext(ActiveControl, True, True);
    他们之间的区别在哪里??
      

  6.   

    (sender as TForm)这样就作为一个TFORM对象来处理,就有perform方法了。