我这样定义了一下,编译能通过,但是怎样定义Click呢?
type
TClick=procedure(sender:tobject) of object;implementation
var
click:tclick;
////////////////////////
我这样定义了一下,编译能通过,但是怎样定义Click呢?
type
TClick=procedure(sender:tobject) of object;implementation
var
click:tclick;
////////////////////////
我这样定义了一下,编译能通过,但是怎样定义Click呢?
解决方案 »
- delphi access violation
- 如何让没有窗体的程序运行完后不退出?
- 从TFORM继承一定需要DFM文件???
- sqlserver有计算字段吗?
- 问个简单SQL问题
- 关于delphi的保存原文件时出现错误(无效页访问的提示窗口,然后delphi就关了)问题?
- 请问怎样自定义程序在进程中的名字;
- 想实现一个思路,不知道怎么做,就是要实现按一个热键,然后就调用屏幕保护程序或者直接黑屏也行。
- 有没有这样一个函数?
- 如何在DBGrid的OnTitleclick时间中确定点击的是哪一列?
- 怎么样才能用SQL Server2000导入*.dbf库,使其速度最快!!也就是说怎么样实现SQL SERVER2000导入DBF库的过程!!
- 有关打印的问题,请教高手
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure aaa(Sender: TObject);
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.aaa(Sender: TObject);
begin
showmessage('Hello');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Self.OnClick:=aaa;
end;end.
但是.OnClick前的对象应是可视控件类
可以用 (Object As TClass).OnEvent 实现
例如: (Sender As TButton).OnClick;
[email protected]
但是我想自动生成一个TMenuitem,并且给这个Menuitem指定onclick响应函数,不想这个函数是任何类的成员,我以前隐约记得可以用of object来修饰这个全局procedure,但是怎么用我忘记了,还望提点!我的意思是我自己的procedure是一个全局的过程,不是任何类的成员。
但是我想自动生成一个TMenuitem,并且给这个Menuitem指定onclick响应函数,不想这个函数是任何类的成员,我以前隐约记得可以用of object来修饰这个全局procedure,但是怎么用我忘记了,还望提点!我的意思是我自己的procedure是一个全局的过程,不是任何类的成员。
但是我想自动生成一个TMenuitem,并且给这个Menuitem指定onclick响应函数,不想这个函数是任何类的成员,我以前隐约记得可以用of object来修饰这个全局procedure,但是怎么用我忘记了,还望提点!我的意思是我自己的procedure是一个全局的过程,不是任何类的成员。
但是我想自动生成一个TMenuitem,并且给这个Menuitem指定onclick响应函数,不想这个函数是任何类的成员,我以前隐约记得可以用of object来修饰这个全局procedure,但是怎么用我忘记了,还望提点!
///////////
procedure Myproc(parentmenu:tmenuitem);//不是Tform1.myproc!!!
var
newmenu;
begin
newmenu:=tmenuitem.create(parentmenu);
newmenu.caption:='sss';
newmenu.onclick:=???????????????//怎样定义??我想知道of object修饰付的用法。
parentmenu.add(newitem);end;
以下程序编译通过。d3+win2000
// Unit1.pas 部分
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure Click; override;
{ Public declarations }
end;
procedure aaa(Sender: TObject);
var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Click;
var Sender:TObject;
begin
inherited Click;
aaa(Sender);
end;procedure aaa(Sender: TObject);
begin
ss:='Hello';
showmessage(ss);
end;end.// Unit2.Pas 公共过程部分
Unit2.pas
unit Unit2;interfacevar ss:string;implementationprocedure aaa(Sender: TObject);
begin
ss:='Hello';
end;end.
如有不明处,e-mail:[email protected]
///////////
procedure Myproc(parentmenu:tmenuitem);//不是Tform1.myproc
var
newmenu;
begin
newmenu:=tmenuitem.create(parentmenu);
newmenu.caption:='sss';
newmenu.onclick:=???????????????//怎样定义??我想知道of object修饰付的用法。
parentmenu.add(newitem);end;/////////////
感谢!
type
TA =class
procedure AAA(sender:tobject);
end;
A:TA;procedure Myproc(parentmenu:tmenuitem);//不是Tform1.myproc
var
newmenu;
begin
newmenu:=tmenuitem.create(parentmenu);
newmenu.caption:='sss';
newmenu.onclick:=A.AAA;//必须保证A已被Create,并且在newmenu被释放前未被释放
parentmenu.add(newitem);end;
of object修饰付干什么用的呢?
"全局函数procedure后面加上of object"本身就不对,of object只用在声明方法指针
procedure Myproc(parentmenu:tmenuitem);//不是Tform1.myproc!!!
var
newmenu; TMenuItem;
M: TMethod;begin
newmenu:=tmenuitem.create(parentmenu);
newmenu.caption:='sss';
M.Code := @AA;
M.Data := nil;
//newmenu.onclick:=???????????????//怎样定义??我想知道of object修饰付的用法。
newmenu.onclick:= TNotifyEvent(M);
parentmenu.add(newitem);end;
M.Data := NewMenu;
procedure MyClick(Sender:TObject);
然后在你要处理的地方
xxx.click := MyClick;
就可以了!