刘麻子,我要加1分给你, ( 积分: 3 )

  • 主题发起人 主题发起人 饭前饭后
  • 开始时间 开始时间

饭前饭后

Unregistered / Unconfirmed
GUEST, unregistred user!
自定义消息的方法是在某一个事件下执行投递原先已定义好的消息,<br>有无办法像Windows消息一样自动触发,不需要手工投递,<br>例如在某一个窗体下,只要单击就能触发那条原先已定义好的消息,<br>不用在每个控件的单击事件都放一条PostMessage()
 
自定义消息的方法是在某一个事件下执行投递原先已定义好的消息,<br>有无办法像Windows消息一样自动触发,不需要手工投递,<br>例如在某一个窗体下,只要单击就能触发那条原先已定义好的消息,<br>不用在每个控件的单击事件都放一条PostMessage()
 
怎么感觉意思有些含糊呢~~你是想在“某个窗体”下的多个子控件在被单击时触发同一事件吧??<br>
 
一个程序有很多个窗体,我只想单击Form1和Form1下的控件时触发,其它窗体不用触发
 
Windows自己的消息,通常情况下也是SendMessage手动来发的,只不过你没看见。
 
Form1下面有几十个控件,你不是叫我每一个控件的单击事件都加一条SendMessage语句吧?
 
因为Windows自己的消息,是Windows自己SendMessage给你的form(控件)<br>所以你自己的也只有自己SendMessage &nbsp;[^]
 
我的目的是要单击工程中的某一个窗体及其窗体下的控件时执行同一段代码<br>如果每个控件都发一条SendMessage消息的话,那样太无技巧了,<br>如果窗体下有几百个控件,那怎么办,那样不是要发几百条消息吗,<br>那样编程还有什么意思,同做苦力无什么区别,<br>请问有没有其它办法解决,请大家帮帮忙。
 
你可以考虑用Delphi的集成方法建立你的窗口啊。这样你就可以只在一个窗口中将一些重复事件写一次就行啦。
 
sydan你好,请问怎样用集成方法建窗口,教教我!
 
派分,派分,人人有份,永不落空!
 
另外加多一分奖励大家!
 
惨,唔够分,点算
 
怎样另外加分的
 
不能另外加分,给他们分了得了,千万别给我,我不缺分。
 
刘麻子,这样对你不公平呀,我要加1分给你,有无其它办法可以加给你
 
本来分这么少的问题很少光顾,但看楼主点名要给麻子大侠加1分,心里实在是不愿意大侠的自尊被如此折磨,只好自不量力地挡挡刀了!<br><br><br>&amp;gt;&amp;gt;单击工程中的某一个窗体及其窗体下的控件时执行同一段代码<br><br>unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> &nbsp;Dialogs, StdCtrls;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp; &nbsp;Button1: TButton;<br> &nbsp; &nbsp;Button2: TButton;<br> &nbsp; &nbsp;Label1: TLabel;<br> &nbsp; &nbsp;procedure Button1Click(Sender: TObject);<br> &nbsp; &nbsp;procedure Button2Click(Sender: TObject);<br> &nbsp; &nbsp;procedure FormClick(Sender: TObject);<br> &nbsp; &nbsp;procedure FormCreate(Sender: TObject);<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp;protected<br><br> &nbsp;public<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp; &nbsp;pre:Boolean;<br> &nbsp; &nbsp;procedure Dothis;<br> &nbsp; &nbsp;procedure AppMessage(var Msg: TMsg; var Handled: Boolean);<br><br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br><br>{ TForm1 }<br><br>procedure TForm1.Dothis;<br>begin<br> &nbsp;Label1.Caption:='Dothis';<br> &nbsp;pre:=True;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> &nbsp;if Pre then<br> &nbsp;begin<br> &nbsp; &nbsp;ShowMessage('Button1 is Click');<br> &nbsp; &nbsp;Label1.Caption:='AfterDothis';<br> &nbsp; &nbsp;Pre:=False;<br> &nbsp;end;<br>end;<br><br>procedure TForm1.Button2Click(Sender: TObject);<br>begin<br> &nbsp;if Pre then<br> &nbsp;begin<br> &nbsp; &nbsp;ShowMessage('Button2 is Click');<br> &nbsp; &nbsp;Label1.Caption:='AfterDothis';<br> &nbsp; &nbsp;Pre:=False;<br> &nbsp;end;<br>end;<br><br>procedure TForm1.FormClick(Sender: TObject);<br>begin<br> &nbsp;if Pre then<br> &nbsp;begin<br> &nbsp; &nbsp;ShowMessage('Form1 is Click');<br> &nbsp; &nbsp;Label1.Caption:='AfterDothis';<br> &nbsp; &nbsp;Pre:=False;<br> &nbsp;end;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br> &nbsp;Pre:=False;<br> &nbsp;Application.OnMessage:=AppMessage;<br>end;<br><br>procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);<br>begin<br> &nbsp;if Msg.message = WM_LBUTTONDOWN then<br> &nbsp;begin<br> &nbsp; &nbsp;if Screen.ActiveForm=self then<br> &nbsp; &nbsp;dothis;<br> &nbsp;end;<br>end;<br><br>end.<br><br>澄清一点:写代码就是苦力,没有懒可以偷,有些代码即使重复一千边你也要重复。<br>
 
分不够分,无办法,为有如此:
 
多人接受答案了。
 
后退
顶部