一个关于Sender的问题 (50分)

  • 主题发起人 主题发起人 zs610
  • 开始时间 开始时间
Z

zs610

Unregistered / Unconfirmed
GUEST, unregistred user!
现欲编写一个程序,在客户端按下某个按钮,服务器端执行相应的程序。
例如:
procedure Tform1.buttonclick(Sender);
begin
if Sender = Button1 then
begin
.....;
end
else
if Send = Button2 then
begin
. ...;
end
else
......

利用 NMUDP 控键的 SendBuffer(),从客户端传过来的字符串 ButtonName 内容为 Button1,
在服务器端的 NMUDP 的 Onrecievedata 事件中应该如何用 ButtonName 做参数来调用 Tform1.buttonclick(Sender); 函数。

能把字符串类型的变量 ButtonName 转换成 TObject 类型的 Sender 吗?
 
tbutton(sender).name;//就是你想要的
说明,前面需要强制转换,因为sender在此是一个Tobject型的指针
如果不加转换,直接调用回得不到正确的内存结构.
 
FindComponent
 
To eric.youbin:
我得到了 Button 的 Name 属性,即客户端传送过来的 ButtonName,
因为它是字符串类型,与 Sender 类型不符,直接调用 Tform1.buttonclick(ButtonName);
会提示 类型不匹配。
如何把字符串类型的变量 ButtonName 转换为 TObject 类型的 Sender ?
能进行 Tform1.buttonclick(...); 这样的调用吗?怎么有时候他提示 这是Class声明的方法,
不能调用?
 
function GetComponent(const Name: string): TComponent;
 
procedure Tform1.button1click(Sender);
begin
buttonclick(Sender);
end;
procedure Tform1.button2click(Sender);
begin
buttonclick(Sender);
end;
....
procedure Tform1.buttonclick(Sender);
begin
if Sender = Button1 then
begin
.....;
end
else
if Send = Button2 then
begin
. ...;
end
else
......
 
楼上的方法有点脱裤子放屁的味道,不要怪我多嘴阿,你把button1..n的onclick事件
都指向button1click,就可以在sender中区分所有的按钮.
当然,上面的话有点多余,我知道你不是要解决这样的问题了.
楼上的楼上提供的方法就是你想要的.
function GetComponent(const Name: string): TComponent;
if Tbutton(GetComponent(abuttonname)).click;//就会执行你要的按钮点击.
 
To eric.youbin:
我来试一下。
谢谢!
 
GetComonent提示未定义。
出错。
 
多人接受答案了。
 
后退
顶部