你说的当A满足条件是这样吧? private procedure test();im.... ... .. procedure test(); being showmessage('test'); end; procedure form1.button1onclick(...); being if a=条件 then test(); end; 你是这意思吗?这只是调用一个函数。 事件的执行是不的确的。当用户有了一定的动作,产生了消息队列,然后到达DELPHI应用里,才触发事件的,然后去执行事件指向的函数。事件就像一个指针一样。比如我点一下鼠标,会产生 一个WM_MOUSEDOWN消息,然后DELPHI应用会自动捕捉消息,然后再分配消息到适合的地方去处理。这时正对上了MOUSEDOWN事件,事件又指向一个函数,才真正去处理消息。当然也可以自己定义处理消息的函数
我不是指的系统消息或事件, 我指的是自定义事件 我用C#描述一下吧 class test { public delegate void MyTestHandle(object sender, int i); public event MyTestHandle test; public void testevent { ontest(); } public void ontest() { if(test!= null) test(); } } 我想知道如何写触发事件的代码,请兄弟们帮我将上面C#的代码翻译成delphi代码,谢谢
否则要自己在类内部另开线程,实时监听该条件是否成立.
private
procedure test();im....
...
..
procedure test();
being
showmessage('test');
end;
procedure form1.button1onclick(...);
being
if a=条件 then
test();
end;
你是这意思吗?这只是调用一个函数。
事件的执行是不的确的。当用户有了一定的动作,产生了消息队列,然后到达DELPHI应用里,才触发事件的,然后去执行事件指向的函数。事件就像一个指针一样。比如我点一下鼠标,会产生
一个WM_MOUSEDOWN消息,然后DELPHI应用会自动捕捉消息,然后再分配消息到适合的地方去处理。这时正对上了MOUSEDOWN事件,事件又指向一个函数,才真正去处理消息。当然也可以自己定义处理消息的函数
我指的是自定义事件
我用C#描述一下吧
class test
{
public delegate void MyTestHandle(object sender, int i);
public event MyTestHandle test;
public void testevent
{
ontest();
}
public void ontest()
{
if(test!= null)
test();
}
} 我想知道如何写触发事件的代码,请兄弟们帮我将上面C#的代码翻译成delphi代码,谢谢
你可以自己定义消息函数,但参数格式和输出必须一样而且要有message标示符
to whitetiger8(白虎) coreblood(菜码)
你们如果想要分,跟我说一下,我开个贴子给你们送分
可问题没解决,我给谁分啊
白虎兄一个帖子涨了一个角
unit Unit2;interfaceuses windows;
type
TMyTestHandle=procedure(sender:tobject; i:integer) of object;
//Class 1
TTest1=class
private
FOnTest:TMyTestHandle;
procedure FSetOnTest(value:TMyTesthandle);
public
procedure DoTest(i:integer);
published
property onTest:TMyTestHandle read FOnTest write FSetOnTest;
end;
//Class 2
Ttest2=class
private
FTTest1:TTest1;
public
constructor create;
procedure Test(sender:TObject;i:integer);
end;implementationprocedure Ttest1.DoTest(i:integer);
begin
if assigned(FOnTest) then
begin
FOnTest(self,i);
end;
end;procedure Ttest1.FSetOnTest(value :TmyTesthandle);
begin
FOnTest:=value;
end;{ Ttest2 }constructor Ttest2.create;
begin
FTTest1 := Ttest1.Create;
FTtest1.onTest:= self.Test;
end;procedure Ttest2.Test(sender: TObject; i: integer);
begin
OutPutDebugString('C# convert to Delphi :Test class success ');
end;end.