比如说动态创建了名为myedit的edit控件,但是怎么才能写这个edit控件的OnKeyPress的代码呢?我试过定义一个过程类型
TNewKeyPress=procedure(Sender: TObject; var Key: Char) of object;
然后声明
var MyKeyPress:=TNewKeyPress;然后在implementation之后写代码:procedure TForm1.FormCreate(Sender: TObject);
begin
........
myedit.onKeyPress:=MyKeyPress;
........
end;procedure MyKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('hello');
end;就会提示MyKeyPress被重复声明了。呵呵,基础不牢,望各位指教。
TNewKeyPress=procedure(Sender: TObject; var Key: Char) of object;
然后声明
var MyKeyPress:=TNewKeyPress;然后在implementation之后写代码:procedure TForm1.FormCreate(Sender: TObject);
begin
........
myedit.onKeyPress:=MyKeyPress;
........
end;procedure MyKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('hello');
end;就会提示MyKeyPress被重复声明了。呵呵,基础不牢,望各位指教。
解决方案 »
- 如何做QQ用户列表那样的界面?
- 主程序与DLL的关系(属于不同进程,还是属于同一进程的不同线程,还是其他?)
- 用Delphi 怎么做OutLook里.收件人一栏的效果?
- 取出五个数中的最大数,用什么算法最快?
- 最新SOS:关于ftp下载的问题和Tchecktreeview控件的问题!在线等待!!〉〉〉〉
- adotable 问题
- 用RzCheckTree作权限菜单?
- IntraWeb高手抢分系列之二(TIWTimer.OnAsyncTimer事件中如何刷新图片)
- socket 客户端发送指令到服务端 服务端怎么反馈给客户端
- 動態create的物件如何拿來使用
- ???com组件问题-在线等
- 小问题
只需在private里声明MyKeyPress就行了
procedure TForm1.FormCreate(Sender: TObject);
begin
........
myedit.onKeyPress:=MyKeyPress;
........
end;procedure MyKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('hello');
end;
TNewKeyPress=procedure(Sender: TObject; var Key: Char) of object;
没有比要。
procedure MyKeyPress(Sender: TObject; var Key: Char) of object;
procedure MyKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('hello');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
........
myedit.onKeyPress:=MyKeyPress;
........
end;
回答:
mykeypress一定要放在一个单元中,现在你放在了form1中你可以新建一个单元myunit,然后把mykeypress放到里面就得了;2 to dacong(大聪):这句procedure mykeypress(Sender: TObject; var Key:char) of object;应该写在什么地方?我在type部分写,提示说[Error] Unit1.pas(23): ';' expected but 'OF' found。
回答:
可以把mykeypress当作以个独立的过程来处理,放在type范围之外就可以了,例如以下写法:
type
end;procedure mykeypress ....
procedure mykeypress(Sender: TObject; var Key:char)
procedure TForm1.FormCreate(Sender: TObject);
begin
........
myedit.onKeyPress:=MyKeyPress;
........
end
行不行哦!
procedure mykeypress(Sender: TObject; var Key:char)
end;var
myclass:Tmyclass;procedure TForm1.FormCreate(Sender: TObject);
begin
........
myclass:=Tmyclass.create;
myedit.onKeyPress:=myclass.MyKeyPress;
........
endprocedure Tmyclass.MyKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('hello');
end;