高手请进,有关事件处理的问题 我有一个继承自TPanel的已知组件A,一个(直接或间接)继承自TControl的未知组件B。B放置与A之上,我需要在A中实现点击B时首先激发A中的某些操作然后响应B中原先定义的操作,我该如何做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义两个过程a/b,点击B时首先执行过程a,然后执行过程b.不知道理解了你的意思没有。如果在组件A中实现,可以先判断它的包含的组件中是否有自TControl的未知组件B,有,再判断是否存在事件属性。.... 问题是如何在A中给B组件的WM_LButtonDown消息处理赋值,要知道TControl的OnClick事件是非公开的。 在B组件中,重载wndproc过程,在WM_LBUTTONDOWN消息的处理部分判断B组件的owner是否是A,如果是,执行A中的过程,再执行B的过程。 我不可能在B组件中重载任何过程啊,因为B组件对我来说是不可知的,只知道他继承自TControl类。 下面是我的代码,主要的地方就是在B中使用了消息拦截进行了处理,因为为了显示的需要,所以B继承自TEdit,换成TControl也是可以的,你看是否合乎你的意思unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls;type TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; TForm1 = class(TForm) Button1: TButton; A: TPanel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TB = class(TEdit) private procedure dd(var msg: TMessage); message wm_lbuttondown; public end;var Form1: TForm1; b: TB;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin b := TB.Create(Self); B.Parent := a; b.Left := 1; b.Width := 100; b.Top := 1; b.Height := 100; b.Visible := True;end;{ TB }procedure TB.dd(var msg: TMessage);begin Form1.A.Caption := Form1.A.Caption + Form1.A.Name; b.Text := b.Text + 'haha ';end;end. 如何实现一个在输的数字串,自动分隔成每4个数字中间空格显示 帮帮我嘛 关于报表问题 以前的Delphi程序无法运行,显示找不到所需的MFC42D.dll文件 SqlServer数据库的备份问题 直接在 DBGrid 中修改数据的问题 谁用过armadillo3.01? 很简单的问题,请大家帮忙 Delphi我想写一段很长是数进变量~那变量类型要用什么啊? 在Windows任务栏上右键所产生的菜单在何处修改? 请问怎样在quickreport打印数据时加上表格?谢谢 如何获得邮箱服务的POP地址,通过DNS解析?(解决立即给分,不够再加,急)
不知道理解了你的意思没有。如果在组件A中实现,可以先判断它的包含的组件中是否有
自TControl的未知组件B,有,再判断是否存在事件属性。....
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;type
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object; TForm1 = class(TForm)
Button1: TButton;
A: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations } public
{ Public declarations }
end; TB = class(TEdit)
private
procedure dd(var msg: TMessage); message wm_lbuttondown;
public
end;var
Form1: TForm1;
b: TB;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
b := TB.Create(Self);
B.Parent := a;
b.Left := 1;
b.Width := 100;
b.Top := 1;
b.Height := 100;
b.Visible := True;
end;{ TB }procedure TB.dd(var msg: TMessage);
begin
Form1.A.Caption := Form1.A.Caption + Form1.A.Name;
b.Text := b.Text + 'haha ';
end;end.