我把菜单项的click方法名都存在数据库表中,但是我把方法名从数据库中取出来是String类型,无法与菜单项的Click事件(方法类型)匹配,我想问的就是有什么办法可以把字符串类型转换为方法类型嘛?请给代码~谢谢
解决方案 »
- combobox的这个功能是如何实现的
- 手里服务器多了想批量管理服务器有什么好办法吗?
- 十万火急 关于ORACLE ORA-12154:TNS无法解析指定的连接标识符 的问题
- 设置WebBrowser出现的BUG,高手请进帮忙解决
- 做三层架构,有几个API函数不懂,看win32帮助半懂半不懂的,请帮忙看看
- 请问哪有关于SOCKET的相关资料书籍可以下载??
- 怎样得出本机的IP地址
- 怎样给panel加上滚动条
- 一个很有意思的问题,英雄救美?英雄?where?
- 为了得到当前使用的数据表名称,想通过一个全局变量FmType的值判别后传递进来
- wwDBGrid 只显示4为小数
- wwDBGrid显示科学计算
查阅 TypInfo单元的函数的使用方法
Button1: TButton;
procedure Button1Click(Sender: TObject);
published
procedure test(str: string);
{ Public declarations }
end;procedure TForm1.test(str: string);
begin
ShowMessage(str);
end;procedure TForm1.Button1Click(Sender: TObject);
type
Test = procedure(AObj : TObject; str: string);
var
TAddress: Pointer;
T1: Test;
begin
TAddress := Form1.MethodAddress('test');
T1 := Test(TAddress);
T1(nil, '123');
end;
function TMyForm.GetMenuClickedMethod(const ClickMethodName: string): TNotifyEvent;
begin
//TNotifyEvent是一个TMethod结构
TMethod(Result).Data := Self;
//TObject.MethodAddress可以获取published方法
TMethod(Result).Code := MethodAddress(ClickMethodName);
end;
这是我打开MDI子窗口的代码:procedure tform17.OpenA(sender:TObject);
begin
if not Assigned(Form1) then //判断子窗体是否已打开
begin
Form1:=TForm1.Create(Self);
Form1.Show;
end
else Form1.BringToFront;
end;我就是想把Form1改成字符串类型哈,麻烦了~