//如何让光标进入DBEedit1的时候 出现两个对话框? 感谢各位! 没有可用分了,期待各位的解答.    procedure DBEditEnter1(Sender: TObject); //事件1
    procedure DBEditEnter2(Sender: TObject);  //事件2
  private
    { Private declarations }
  publicprocedure TForm2.DBEditEnter1(Sender: TObject);
begin
  ShowMessage('1');
end;procedure TForm2.DBEditEnter2(Sender: TObject);
begin
  ShowMessage('2');
end;procedure TForm2.FormShow(Sender: TObject);
var
  aMethod,bMethod:TMethod;
  i:integer;
begin    aMethod.Data := Pointer(Self);
    aMethod.Code := MethodAddress('DBEditEnter1');
    if Assigned(GetPropInfo(DBEdit1, 'OnEnter')) then
       SetMethodProp(DBEdit1, 'OnEnter', aMethod);    bMethod.Data := Pointer(Self);
    bMethod.Code := MethodAddress('DBEditEnter2');
    if Assigned(GetPropInfo(DBEdit1, 'OnEnter')) then
       setMethodProp(DBEdit1, 'OnEnter', bMethod);
end;

解决方案 »

  1.   

    顶一下楼主,你的想法挺有意思的,不知道我的理解对不对?两个事件相加是不是要指向同一事件?
    我改了一下代码可见如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, TypInfo;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Memo1: TMemo;
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure TestEvent(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TestEvent(Sender: TObject);
    begin
      Memo1.Lines.Clear;
      Memo1.Lines.Add(Sender.ClassName + chr(32) + TEdit(Sender).Text);
    end;procedure TForm1.FormShow(Sender: TObject);
    var
      aMethod,bMethod:TMethod;
      i:integer;
    begin
        aMethod.Data := Pointer(self);
        aMethod.Code := @TForm1.TestEvent;
        if Assigned(GetPropInfo(Edit1, 'OnEnter')) then
           SetMethodProp(Edit1, 'OnEnter', aMethod);    bMethod.Data := Pointer(Self);
        bMethod.Code := @TForm1.TestEvent;
        if Assigned(GetPropInfo(Edit2, 'OnEnter')) then
           setMethodProp(Edit2, 'OnEnter', bMethod);
    end;end.
      

  2.   

    LZ应该想说的是事件链在delphi中的实现?
      

  3.   

    谢谢1楼的代码可能我表达错误了procedure DBEditEnter1(Sender: TObject); //事件1 弹出对话框 显示"1"
    procedure DBEditEnter2(Sender: TObject);  //事件2 弹出对话框 显示 "2"
    (**以上为定义的2个过程**)当光标进入 DBEdit1的时候,能响应上面2个事件
    相当于 DBEdit1.OnEnter:=DBEditEnter1+DBEditEnter2;
    注:不把2个事件合并成一个事件 如下(下面不是我想要的解决方案):
    procedure DBEditEnter1(Sender: TObject); 
    begin
      showmessage('1');
      showmessage('2');
    end;
    再次拜谢各位!继续期待解答!
      

  4.   

    ShowMessage或弹出模态窗体,是不大可能同时出现2个的,因为模态窗体一旦出现,程序会暂时停下来,等待窗体关闭,然后才能继续执行下去
      

  5.   

    LZ是不是想要委托链的效果!
    类似于先定义一个事件List,把相关事件的地址加入该List,并把List地址指向某事件A,这样在执行某事件A时,会先遍历List中的事件组,是这样吗?
      

  6.   

    同意6樓的看法,C# 中是可以事件相加的,Delphi中怎么搞希望有高手可以解答