比如说有100个edit,每个edit改变时都激活onchange获取edit.text和edit.top 例如:(30分)

  • 主题发起人 主题发起人 xuefeiyang
  • 开始时间 开始时间
X

xuefeiyang

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说有100个edit,每个edit改变时都激活onchange获取edit.text和edit.top 例如:
procedure Tmailt.Edit1Change(Sender: TObject);
begin
s:=dbedit1.Text;
n:=dbedit1.top;
end;
但一个个写太麻烦了,有没有办法写一个过程或函数统一调用?
 
你可以,都调用一个过程
procedure Tmailt.EditChange(Sender: TObject);
for i:=0 to 99 do
begin
s:=(sender as Tdbedit).text;
n:=(sender as Tdbedit).top;
end;
 
你可以选中所有的EDIT然后在它们的OnChange事件中选择EditChange;
 
我的目的是这样的:
edit里需要填的内容可能比较多,为了省事用了onchange.例如用户只填一个‘中’,
通过sql查询将所有包括‘中’的值放入listbox,然后用户在选择点击,然后自动写入
edit.
现在的问题是因为有很多edit,所以在listbox中被选中的值怎样才能写入被修改的edit
里呢?
即所有的edit都共用一个onchenge,也就是
procedure TForm1.Edit1Change(Sender: TObject);
begin
………………//查询(sender as Tedit).text后将结果加入到listbox中
//已解决
end;
而listbox被选择后,也就是
procedure TForm1.ListBox1Click(Sender: TObject);
begin
?edit.text?:=listbox1.Items[listbox1.itemindex];
end;
??中间应该写哪个editj就不知道了
 
??中间怎样获得要被修改的edit名呢?
 
早讲呀,定义一个全局变量不就可以了
var
CurEdit: TEdit;

procedure TForm1.Edit1Change(Sender: TObject);
begin
………………//查询(sender as Tedit).text后将结果加入到listbox中
//已解决
CurEdit := TEdit(Sender);
end;
 
只需在一个里写,然后选中剩余所有的EDit,在onchange事件里
下拉选择所写编码的EDit的事件就应该可以了,这样就是在共用
一个事件了,任何一个的变化都会及时反映出来
 
使用指針。
var
tpoint = ^ TEdit;

procedure TForm1.Edit1Change(Sender: TObject);
begin
………………//查询(sender as Tedit).text后将结果加入到listbox中
//已解决
tpoint ^:= TEdit(Sender);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
tpoint ^.text:=listbox1.Items[listbox1.itemindex];
end;

 
改造edit控件,重载相关消息函数就行
 
tedit(sender).Name,
这样就能得到了
 
onChange事件可以通过赋值得到

//做一procedure
procedure Tmailt.DBEditChange(Sender: TObject);
begin
s:=(Sender as DBTEdit).Text;
n:=(Sender as DBTEdit).top;
end;

//指定onChange事件
procedure Tmailt.SetChangeEvent;
var iTemp:Integer;
edtTemp:TDBEdit;
begin
for iTemp:=0 to 99 do
begin
edtTemp:=FindComponent('DBEdit'+IntToStr(iTemp));
if (edtTemp<>nil) and (edtTemp is TDBEdit) then
edtTemp.onChange:=DBEditChange;
end;
end;

可以试试
 
有误
(edtTemp as TDBEdit).onChange
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部