如何获取窗体中Button1按钮当前的onClick事件的名称
默认当前是:'Button1Click',
可以把'Button1Click'做为一个字符串赋值给变量abc。
当我showmessage(abc);
可以显示'Button1Click'
怎么实现?
默认当前是:'Button1Click',
可以把'Button1Click'做为一个字符串赋值给变量abc。
当我showmessage(abc);
可以显示'Button1Click'
怎么实现?
解决方案 »
- 关于edit与memo的问题
- 程序打包,delphi程序,数据库为ACCESS,其中用到mscomm控件.我该用什么打包?怎么打?注意什么?
- 我需要BusinessSkinForm得帮助文档和demo!
- 请问,这个软件,能开多少价?
- 请问ICS控件包里的WSOCKET控件里用UDP协议发信息,请问有没有象INDY里的IDUDPCLIENT控件
- 请问:如何判断计算机已经和inter网连接?100分
- ★★★ ComboBoxEx 相关问题 [虽然是小问题,却也不容易解决]
- 关于处理图像的问题
- diamondado的一个问题,可能是一个BUG吧?大家看一下要怎么解决?
- 如果不使用DB系列控件。。。。
- 如何获得本地ip地址,计算机名?????
- 请问在程序运行过程中动态改变image的大小时,怎样才使Image中已画的图形不被擦除
不过研究VCL框架,就应该知道有这种代码在dfm中。
object Button1: TButton
Left = 256
Top = 272
Width = 75
Height = 25
Caption = #21457#36865#20449#24687
TabOrder = 0
OnClick = Button1Click
end
估计2楼的方法也不行。
对于编译器才要Button1Click这个字符串,对于生成的exe只是要这个函数的地址,和名称基本无关。
先写一个通用过程procedure BtnClick(Sender: TObject);。
在动态创建按钮的时候附值button1.OnClick := BtnClick;
var
Proc: TNotifyEvent;
begin
@Proc := MethodAddress('Button1Click');
if Assigned(Proc) then
Proc(nil);
end;
转成事件地址执行,我想反过来理论上来说是可以实现的!可能实现的过程要复杂很多!
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := MethodName(@TButton(Sender).OnClick);
end;
i: integer;
begin
for i:=0 to ComponentCount - 1 do
begin
if Components[i].ClassNameIs('TButton') then
ShowMessage(MethodName(@TButton(Components[i]).OnClick));
end;
end;
S: string;
I: Integer;
begin
S := '';
for I := 0 to ComponentCount - 1 do
if Components[I] is TButton then
S := S + ',' + MethodName(@TButton(Components[I]).OnClick);
Delete(S, 1, 1);
ShowMessage(S);
end;
uses TypInfo; // use GetMethodPropprocedure TForm1.FormCreate(Sender: TObject);
var
S: string;
I: Integer;
vMethod: TMethod;
begin
S := '';
for I := 0 to ComponentCount - 1 do
begin
vMethod := GetMethodProp(Components[I], 'OnClick');
if Assigned(vMethod.Code) then
S := S + ',' + MethodName(vMethod.Code);
end;
Delete(S, 1, 1);
ShowMessage(S);
end;
靠 Ctrl旁边那个键才+D才是显示桌面啊 zswang(伴水清清)的方法不错
p:pointer;
S:string;
begin
p := pointer(@button1.onclick);
s := MothedName(p);
end;s就是button1的onclick事件名称