请问这段代码为什么不能动态创建按钮?救命!谢谢(100分)

  • 主题发起人 主题发起人 kingmax
  • 开始时间 开始时间
K

kingmax

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
//tcountbutton=class (tbutton)
procedure FormMouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tcountbutton=class (tbutton)
constructor create (aowner:tcomponent);override;
destructor destroy
override;
class function gettotal:integer;
end;


var
Form1: TForm1;


implementation

{$R *.DFM}
var
totbtns:integer=0;
class function tcountbutton.gettotal: integer;
begin
result:=totbtns;
end;

constructor tcountbutton.create(aowner: TComponent);
begin
inherited Create(aowner);
inc (totbtns);
end;
destructor tcountbutton.destroy;
begin
dec(totbtns);
end;
procedure TForm1.FormMouseDown(Sender: TObject
Button: TMouseButton;
Shift: TShiftState
X, Y: Integer);
var
btn:tcountbutton;
begin
btn:=tcountbutton.create (self);
btn.parent:=self;
btn.Left:=x;
btn.Top:=y;
btn.Width:=btn.Width+50;
btn.caption:=format('button at %d,%d',[x,y]);

{begin
with tcountbutton.create (self) do
begin
parent:=self;
left:=x;
top:=y;
width:=width+50;
caption:=format('button at %d,%d',[x,y]);
end;}


end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
caption:=format('countobj:%d custom buttons',[tcountbutton.gettotal]);

end;

end.
 
我试过没问题,当鼠标点击窗体时就会动态创建按钮呀.
 
没问题的
 
我怎么不成呀
 
在我这儿不行呀
 
没问题,绝对可以创建,我已经试过了
 
有问题,你动态创建的按钮没有指定高度,叫它如何显示?
只要你再加上一句,如:“btn.Height :=50;”,就可以显示了。
 
接受答案了.
 
后退
顶部