1.动态创建的组件Button1在创建时Button1.OnClick:=Button1Click;保存后读出来Button1.OnClick:=Button1Click;
为什么在读出来后点Button1没有反应...
2.在创建Button1时调用TButton.Create();然后保存,在读取时又调用了一次TButton.Create();组件能正常的读取出来.但是Onclick事件调用不到..
3.怎样使动态生成的Button1在创建后保存,读取后都能调用Button1Click???

解决方案 »

  1.   

    Create()后其关联的事件指针为nil了,需要重关联:button1.OnClick := Button1Click
      

  2.   

    你是如何保存的?
    Button1.OnClick:=Button1Click这一段你持久化保存了吗?
    因为你没有保存所以找不到了。
      

  3.   

    SmallHand:持久化保存后会保存这些关联吗?
    有没有持久化保存组件的例子,给段吧,谢谢...
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        FButton: TButton;
      public
        { Public declarations }
      published
        procedure ButtonClick(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      FButton := TButton.Create(Self);
      FButton.OnClick := ButtonClick;
      FButton.Caption := 'Test';
      FButton.Parent := Self;
    end;procedure TForm1.ButtonClick(Sender: TObject);
    begin
      ShowMessage('Test');
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      fs: TFileStream;
    begin
      fs := TFileStream.Create('C:\Test.dat', fmCreate or fmOpenWrite);
      fs.WriteComponent(Self);
      fs.Free;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
      fs: TFileStream;
    begin
      RegisterClass(TButton);
      DestroyComponents;
      fs := TFileStream.Create('C:\Test.dat', fmOpenRead);
      fs.ReadComponent(Self);
      fs.Free;
    end;end.
    你要对控件的Owner进行持久化,例如你的Button的Owner是Form,在ReadComponent中,它会在Owner中用MethodAddress方法找它的published方法中名称对应的方法地址,然后关联上。如果你仅仅写入的是TButoon,那么它是不知道你的ButtonClick到底在那个类中的。