单击button时调用form.onshow事件该怎样写代码?
谁能解释一下原理吗?谢谢.

解决方案 »

  1.   

    FormShow(nil);直接调用方法即可, 象函数一样的用就行了.
      

  2.   

    若此 Form 不是 Button 所在的 Form, 则可以如下调用(例子):
    Form2.Show; 或 Form2.ShowModal;
      

  3.   

    假设你的Form的OnShow事件中现在有代码,如下:
    procedure TForm1.FormShow(Sender:TObject);
    begin
      ShowMessage('OnShow');
    end;
    如果这个时候你想在Button1的单击事件中调用OnShow中的代码,可以这样直接写:
    procedure TForm1.Button1Click(Sender:TObject);
    begin
      if Assigned(Self.OnShow) then  //为了提高效率,最好调用前判断一下OnShow中是否有代码,如果没有代码就省的浪费时间进行调用了;这里Self指代窗体Form1
        Self.OnShow;
    end;
      

  4.   

    to FrameSniper:
       self.onshow参数不全,会报错
      

  5.   

    OnShow可以看成一个函数指针
    可以这样写 self.onshow(nil),你试看,我的想象
      

  6.   

    self.OnShow(sender);
    self.self.FormShow(sender);

    self.OnShow(nil);
    self.self.FormShow(nil);
      

  7.   

    不好意思,  *^_^*
    self.OnShow(sender);
    self.FormShow(sender);

    self.OnShow(nil);
    self.FormShow(nil);
      

  8.   

    建议这样写:
      if assigned(self.OnShow) then
        self.OnShow(sender);