我想动态的定义edit控件的onenter,onexit事件,但是直接设置不行
Edit_money.OnEnter:=Edit_moneyEnterYuan;//Edit_moneyEnterYuan是一个过程
Edit_money.OnEnter:=Edit_moneyEnterYuan;//Edit_moneyEnterYuan是一个过程
解决方案 »
- 设计一个基于socket的局域网即时通讯系统
- delphi 填写表单问题
- 很简单的问题
- 怎么找有相同类名的子控件的句柄啊?
- ?为什么用fileread(handle,buffer,count)不能把文件的内容读到我的buffer里?
- 一个游戏程序的画面,Delphi5中不闪烁,Delphi6中却闪烁,为什么?
- 关于adoquery1.sql.add()的问题!
- 下载的控件应该放在delphi中的哪个文件夹中???
- !!!这已经是第三次了,为什么所有的Delphi下载点都无法下载?150求购!
- 一窗体中需要调用A表,先查询,后修改,这样一定要同时建立Ttable和Tquery,先用TQUERY查询,再用TTABLE修改??否则该怎么做???
- 求傣文输入法
- 动态连接数据库?
procedure TForm1.Edit_moneyEnterYuan(Sender: TObject);
beginend;
procedure Edit_moneyEnterYuan(Sender: TObject);
begin
Tedit(sender).Text := FloatStrTostrExtYuan(Tedit(sender).Text)
end;
private
procedure myEditEnter(Sender: TObject);
procedure myEditExit(Sender: TObject);
end;
...
...
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.OnEnter:=myEditEnter;
edit1.OnExit:=myEditExit;
//edit2、edit3……editn不管
end;procedure TForm1.myEditEnter(Sender: TObject);
begin
//……
end;procedure TForm1.myEditExit(Sender: TObject);
begin
//……
end;
我再说一遍我的目的
我要在尽可能小的代码该动量下,使该edit控件的onenter,onexit,onkeypress事件支持两种用法
这就是我问这个问题的原因
...
...
private
procedure myEdit1Enter(Sender: TObject);
procedure myEdit2Enter(Sender: TObject);
procedure myEditExit(Sender: TObject);
end;
...
...
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.OnEnter:=myEdit1Enter;
edit1.OnExit:=myEditExit;
//edit2、edit3……editn不管
end;procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.checked then
edit1.OnEnter:=myEdit1Enter
else
edit1.OnEnter:=myEdit2Enter;end;procedure TForm1.myEdit1Enter(Sender: TObject);
begin
//……
end;procedure TForm1.myEdit2Enter(Sender: TObject);
begin
//……
end;procedure TForm1.myEditExit(Sender: TObject);
begin
//……
end;
可能我说的不清楚,我再说一边:
edit编辑框的onenter,onexit,onkeypress三个事件,原来有一套用法,现在我想用另一套
方法来实现对输入,显示的控制,所以我有一个专门的函数来获取一个状态值,但是我不可能在
onkeypress中每次都访问这个状态值(那样影响效率,磁盘io),所以只能通过在窗体创建时
对edit编辑框的onenter,onexit,onkeypress三个事件进行动态赋值,这样就不用每次都访问
那个状态值了
我应该怎样设置才能成功,一下时我的代码:
//函数
procedure Edit_moneyKeyPressYuan(Sender: TObject; var Key: Char);
begin
key := Edit_KeyPassDotYuan(key,trim(tedit(sender).Text));
end;
//调用代码
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.OnKeyPress:=edit_moneykeypressyuan;
end;总是提示错误:
我不知道你的Edit_KeyPassDotYuan函数是怎么定义的,
所以我就用了个‘a’代替
这样是没错的,不管你输入的是什么键,都显示'a'。procedure Edit_moneyKeyPressYuan(Sender: TObject; var Key: Char);
begin
key := 'a';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.OnKeyPress:=edit_moneykeypressyuan;
end;
我在一个公共单元中定义了一个类,在该类的private事件中声明三个函数,然后在要调用的单元里声明一个该类的实例,然后把edit的哦nenter,onpkeypress,onexit付给这个类的相应函数