已经有一个Form_A,怎样动态生成一个继承Form_A的Form_B窗口?并为Form_B上的BUTTON1的Onclick事件赋值给一个已经存在的过程Procedure xxx(sender : Tobject); ???

解决方案 »

  1.   

    Button1.OnClick := XXX(Send);
      

  2.   

    var
      Form_B : Tform;
      button1: Tbutton;
    begin
      Form_B := tform.create(self);
      try
        Form_B.showmadol;
      finally
        Form_B.free;
      end;
    end;
      

  3.   

    Form_B:=Form_A.Create(self);
    Procedure xxx(sender : Tobject); 
    begin
      Form_B.button1click(nil);
    end;
      

  4.   

    fhuibo(Sailor) 的不错
    提倡这种写法
    var
      Form_B : Tform;
      button1: Tbutton;
    begin
      Form_B := tform.create(self);
      try
        Form_B.showmadol;
      finally
        Form_B.free;
      end;
    end;第二个问题直接付给他就行 因为事件本身就是一个方法指针
    最好在 窗体建立时赋值
      

  5.   

    to :666333(刘六) :  xxx是一个过程,我的意思是当form_B的Button1按下时,执行XXX过程。to  fhuibo(Sailor): 那如何上FORM_B继承Form_a?  
                        当form_B的Button1按下时,执行XXX过程如何解决?
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        class Procedure MyPRC(sender:Tobject);
      end;
      TformChild=Class(Tform1);var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
     var
      aaaa:TformChild;
    begin
          aaaa:=TformChild.Create(self);
          aaaa.Caption :='子类窗体';
          aaaa.Button1.OnClick :=TForm1.MyPRC;
          aaaa.Show;
    end;class procedure TForm1.MyPRC(sender: Tobject);
    begin
       showmessage('aaa');
    end;end.
      

  7.   

    你的过程XXX不能是全局的过程,必须是类 FormB或者FormA的一个成员过程。
    FormB = Class(FormA) // FormB继承FormA。var  b:FormB;b = Formb.create();
    b.button1.onclick = b.xxx;
      

  8.   

    var
      Form_B : Tform_A;
      button1: Tbutton;
    begin
      Form_B := tform_A.create(self);
      try
        button1:=TButton.Create(self);
        button1.parent:=Form_B;
        button1.onclick:=XXX;  
        Form_B.showmadol;
      finally
        Form_B.free;
      end;
    end;
      

  9.   

    直接执行
    procedure TFormB.Button1Click(Sender: TObject);
    begin
      xxx;
    end;
      

  10.   

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure xxx;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
       xxx;
    end;procedure TForm1.xxx;
    begin
      showmessage('xxx');
    end;经过测试通过
      

  11.   

    type
      TForm_b = class(TForm_a)
        Button1: TButton;
        procedure xxx;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form_b: TForm_b;implementation{$R *.DFM}procedure TForm_b.Button1Click(Sender: TObject);
    begin
       xxx;
    end;procedure TForm_b.xxx;
    begin
      showmessage('xxx');
    end;经过测试通过