急急急,都来看看吧,求一简单过程的定义 ( 积分: 2 )

  • 主题发起人 主题发起人 zpselect
  • 开始时间 开始时间
Z

zpselect

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意义
rocedure TForm1.GetBitDept( V_id,V_Code,V_Name: string);
begin
AdoQuery.close;
AdoQuery.sql.clear;
AdoQuery.sql.text:='select name,age from table1 where id='''+V_id+'''';
AdoQuery.open;
V_Code := AdoQuery.Fields[0].Asstring;
V_name:=AdoQuery.Fields[1].Asstring;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GetBitDept(edit1.Text,edit2.Text);//再将两返回值给Edit1 和 Edit2
end;
程序在运行时,Edit1和Edit2中的值并没有!请问该怎么写才行?
 
procedure TForm1.GetBitDept( V_id: string; V_Code,V_Name: TEdit);
begin
AdoQuery.close;
AdoQuery.sql.clear;
AdoQuery.sql.text:='select name,age from table1 where id='''+V_id+'''';
AdoQuery.open;
if AdoQuery.IsEmpty then Exit;
V_Code.Text := AdoQuery.Fields[0].Asstring;
V_name.Text :=AdoQuery.Fields[1].Asstring;
end;
 
procedure TForm1.GetBitDept( V_id: string; V_Code,V_Name: TEdit);
这一句,不能这么写,那就是说V_Code,V_Name这两个参数可能都是Combobox控件的
 
ANiDelphi写的是对的,可以这么写的,参数可以是任何支持DELPHI的类,控件也是类的一种呀,所以支持呀!
 
我就是想实现各种参数类型的转入才那样写的!
 
参数前面带上var
但是调用的时候只能使用string变量作为参数,Edit的Text属性就不能作为参数了
 
procedure TForm1.GetBitDept( V_id: string; var V_Code,VName:string)是这么写吗?
我昨天试了一下,参数只能定义一个,即:
procedure TForm1.GetBitDept( V_id: string; var V_Code:string)
而且像你所说,调用时我使用时,输入的参数为Text,所以就报错!请问怎样才写和调用才是?
 
那你就用函数,返回 variant 数组不就行了。呵呵
 
晕死,还要再写函数啊!一个简单的程序还要用得着再写函数么?
 
如果只有TEdit,TComboBox的话,用下面这个就行了,其它Delphi标准的控件也行,只要有Text属性

procedure TForm1.GetBitDept( V_id: string; V_Code,V_Name: TControl);
begin
AdoQuery.close;
AdoQuery.sql.clear;
AdoQuery.sql.text:='select name,age from table1 where id='''+V_id+'''';
AdoQuery.open;
if AdoQuery.IsEmpty then Exit;
TEdit(V_Code).Text := AdoQuery.Fields[0].Asstring;
TEdit(V_name).Text := AdoQuery.Fields[1].Asstring;
end;

强制转化为TEdit就行了,因为TControl就有Text属性,其下的标准控件都是override,所以虽然强制转化为TEdit,却能调用各自的方法设置,但是不能访问Edit的其它特有属性
 
谢谢提醒,不知我这种方法如何?
with DM do
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Text :=Format('select Dept_code,Dept_name From Data0034 where Big_Dept_ptr=%s', [V_BigDept]);
Query.Open;
if not Query.IsEmpty then
begin
if V_code is TEdit then
TEdit(V_Code).Text := Query.Fields[0].AsString
else if V_code is TComboBox then
TComboBox(V_code).Text := Query.Fields[0].AsString;
if V_name is TEdit then
TEdit(V_name).Text := Query.Fields[1].AsString
else if V_name is TComboBox then
TComboBox(V_name).Text := Query.Fields[1].AsString;
end else
begin
messagedlg('找不到部门,请检查!', mtError, [mbok], 0);
Exit;
end;
end;
 
后退
顶部