我的程序为,在一个form上,有button1,button2。form中有计数器fclicks,每点一次from(不包括上面的button),fclick自增1,并在form的caption上显示fclick的值。点击form上的button1,生成一个新窗体。代码如下。
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormClick(Sender: TObject);
  private
    fclicks: integer;
    { Private declarations }
  public
    { Public declarations }
  end;
procedure TForm1.FormClick(Sender: TObject);
begin
  inc(fclicks);
  caption:='clicks:'+inttostr(fclicks);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  with tform1.create(self) do show;
end;
1,我现在想实现的功能就是,点击button2就可以显示其他窗口中的fclicks,如生成自己所在窗口的母窗口的fclicks.
2,为什么我点击form触发formclick事件,响应非常慢。往往我已经连续按了8、9下,form左上角的caption才显示为4、5。是不是我的电脑太慢了。我的电脑是Athlon XP 1800+,如何提高速度呢?

解决方案 »

  1.   

    应该不是电脑慢,而是你点的太快了吧。双击不能触发onclick事件另外,生成的新窗口跟原来的窗口好像没有什么owner关系吧。所以是不是可以在Tform1类中增加一个成员变量?当点button1时将当前窗口的名称或handle传给新的窗口。这样在点button2时就能够判断这个变量是否为空,如果不为空就知道是在那个窗口中创建的了。然后显示这个窗口中的计数
      

  2.   

    成员变量是什么呢?
    应该怎么传递handle呢?
    新生成的窗口的owner是声称它的窗口
      

  3.   

    public
      function getfclick(): Integer;
    ---------------------------
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      self.caption := inttostr((self.Owner as tform1).getfclick);
    end;function TForm1.getfclick(): Integer;
    begin
      result := fclick;
    end;