我声明了一个私有的过程如下:Procedure TfrmCustOrder.edtCustIDCodeExit(Sender:TObject);
const
  cSqlCustom='select * from Customer where rtrim(CustID)=''%s'' and rtrim(Code)=''%s''';
var
  sCustID,sCode:String;
begin
  sCustID:=Trim(edtCustID.Text);
  sCode:=Trim(edtCode.Text);
  if (sCustID<>'') and (sCode<>'') then
  begin
    with dataGoodsOrder do
      begin
        qryCustomer.Sql.text:=Format(cSqlCustom,[sCustID,sCode]);
        qryCustomer.Open;
        if not qryCustomer.IsEmpty() then
          begin
            IsOldCustomer:=True;
            edtCustName.Text:=qryCustomer.fieldbyname('CustName').AsString;
            rdoSexMale.Checked:=qryCustomer.FieldByName('Sex').AsString='M';
            rdoSexFemale.Checked:=qryCustomer.FieldByName('Sex').AsString='F';
            edtTel.Text:=qryCustomer.fieldbyname('Tel').AsString;
            edtZip.Text:=qryCustomer.fieldbyname('Zip').AsString;
            edtAddress.Text:=qryCustomer.fieldbyname('Address').AsString;
          end
        else
          begin
            IsOldCustomer:=False;
            ShowMessage('顾客号和顾客身份证不符,该顾客是新顾客!');
            uspTmp.Parameters.Clear;
            uspTmp.ProcedureName:='usp_GetNewCustID';
            uspTmp.Parameters.CreateParameter('DataStr',ftString,pdInput,8,formatDateTime('YYYYMMDD',Today));
            uspTmp.Parameters.CreateParameter('CustID',ftString,pdOutPut,11,'');
            uspTmp.ExecProc;
            sCustID:=uspTmp.Parameters.parambyname('CustID').Value;
            edtCustID.Text:=sCustID;
          end;
      end;
  end;
在Form中有个消息响应如下:procedure TfrmCustOrder.edtCodeExit(Sender: TObject);
begin
  frmCustOrder.edtCustIDCodeExit(self.edtCustID.Parent);
end;我利用调试的Watch追踪edtCustID.Text的值发现到frmCustOrder.edtCustIDCodeExit(self.edtCustID.Parent);中的sCustID:=Trim(edtCustID.Text);就有问题了,提示是edtCustID没有定义,可是在过程外的值都是对的,一进过程就不对了,是不是我在消息响应的过程中的参数写的不对?