我声明了一个私有的过程如下: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没有定义,可是在过程外的值都是对的,一进过程就不对了,是不是我在消息响应的过程中的参数写的不对?
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没有定义,可是在过程外的值都是对的,一进过程就不对了,是不是我在消息响应的过程中的参数写的不对?
解决方案 »
- 打印合计问题
- WindowsXP下DCOM的配置
- 谁有Rxlib的帮助啊!,急求!up有分!
- 继续求解:删除文件夹下的所有文件和子文件夹的函数,请多多支持
- 设计控件时怎样决定在组件面板上的图标?
- delphi与Oracle 连接的问题
- 两个表的结构一模一样,我如何把查询到的一些记录直接"复制"到另一表中?insert into table1 values (select * from table2 where ..),不
- 超回收记录的统计???
- 初学者:怎样使用delphi的help
- 老千,老鱼偶用dbedit加query,结果只能现实,无法修改怎么版?????//(牛虻)
- 关于启明软件深圳分公司招聘,了解的朋友请进来
- 动态创建的数组怎么判断数组的个数?
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure Edit1Exit(Sender: TObject);
...
var
Form1: TForm1;
implementation
{$R *.dfm}procedure TForm1.Edit1Exit(Sender: TObject);
begin
showmessage('hello');
end;为什么会有
procedure TfrmCustOrder.edtCodeExit(Sender: TObject);
begin
frmCustOrder.edtCustIDCodeExit(self.edtCustID.Parent);
end;
这一段