• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi给窗体上面所有的控件都挂上一个事件处理过程华软源码 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有的时候 ,我们希望给所有的控件的某个指定的事件挂接一个自定义的事件处理程序 ,例如 ,OnContextPopup 事件 ,那么该如何做呢?

请参看下面的代码 ,下面的代码会给所有有 OnContextPopu 事件的控件都挂接指定的处理程序 :

  private

    { Private declarations }

    procedure AssignOnContextPopupEvent;

    procedure OnContextPopup(Sender: TObject; MousePos: TPoint;

      var Handled: Boolean);

  public

    { Public declarations }

  end;


var

  Form1             : TForm1;


implementation


{$R *.dfm}

uses

  TypInfo;


procedure TForm1.MonthCalendar1GetMonthInfo(Sender: TObject;

  Month: Cardinal; var MonthBoldInfo: Cardinal);

begin

  if Month = 9 then { April}

    MonthCalendar1.BoldDays([3, 21, 28], MonthBoldInfo); { Day 3, 21, 28 }

end;


procedure TForm1.OnContextPopup(Sender: TObject; MousePos: TPoint;

  var Handled: Boolean);

begin

  with Sender as TComponent do

    ShowMessage(Name + ' right-clicked!');

end;


procedure TForm1.AssignOnContextPopupEvent;

var

  i                 : Integer;

  PropInfo          : PPropInfo;

  Method            : TMethod;

  PEvent            : ^TContextPopupEvent;

begin

  for i := 0 to ComponentCount - 1 do

  begin

    PropInfo := GetPropInfo(Components[i].ClassInfo, 'OnContextPopup');

    if (PropInfo <> nil) and (PropInfo^.PropType^^.Kind = tkMethod) then

    begin

      Method := GetMethodProp(Components[i], PropInfo);

      if not Assigned(Method.Code) then

      begin

        PEvent := @Method.Code;

        PEvent^ := OnContextPopup;

        Method.Data := Self;

        SetMethodProp(Components[i], PropInfo, Method);

      end;

    end;

  end;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

  AssignOnContextPopupEvent;

end;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
线性卷积与圆周卷积 matlab发布时间:2022-07-18
下一篇:
Delphi与DirectX之DelphiX(53):TDIB.DoSplitBlur();发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap