procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
      mylabel:TButton;
这段代码在BUTTONCLICK里就不会出问题,可是在这里就会出现错误说TBUTTON类没有定义,这是为什么.在这个过程里不能动态创建组件吗?

解决方案 »

  1.   

    我试了没问题:procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      with TButton.Create(self) do
        begin
        Left := X;
        Top  := Y;
        Parent := self;
        Caption := Format('%d,%d',[X,Y]);
        end;
    end;
      

  2.   

    这样也没问题:var
      MyLabel : TButton;
    begin
      if Assigned(MyLabel) then MyLabel.Free;
      MyLabel := TButton.Create(self);
      MyLabel.Left := X;
      MyLabel.Top  := Y;
      MyLabel.Parent := self;
      MyLabel.Caption := Format('%d,%d',[X,Y]);
    end;
      

  3.   

    难道是我的DELPHI设置有问题?我复制了你的代码还是不行.
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      MyLabel : TButton;
    beginbegin
      if Assigned(MyLabel) then MyLabel.Free;
      MyLabel := TButton.Create(self);
      MyLabel.Left := X;
      MyLabel.Top  := Y;
      MyLabel.Parent := self;
      MyLabel.Caption := Format('%d,%d',[X,Y]);
    end;end;错误提示:undecleared identifier;'Tbutton'
    我放在放的BUTTON的过程里没问题,可是一放到FORM的过程里这样提示,我真郁闷死了
      

  4.   

    引用声明里也有USES STDCRTLS类,所以在BUTTON的过程里这段代码就没什么问题.两段代码在这个过程都是同一个错误提示.真是没办法理解,是不是我的DELPHI缺少补丁?
      

  5.   

    楼上有人说了:uses  StdCtrls;需要引用这个单元。我们两个都没有注意这个。其实,你可以先拖一个Button放到Form上,然后马上删掉,就发现多了一个StdCtrls单元。TButton类是在这个单元定义的。
      

  6.   

    确实是USES引用的问题,多谢了,这20分你们平分吧.特别感谢低调做人大哥,真是个大好人.