动态创建控件的问题。(100分)

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

kemble

Unregistered / Unconfirmed
GUEST, unregistred user!
想动态创建一个Button,代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
btn:TButton;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.btn1Click(Sender: TObject);
begin
btn:= tButton.Create(Self);
btn.Left:=Form1.Width div 2;
btn.Top:=Form1.Height div 2;
btn.Caption:='Hello World!';
btn.Visible := true;
end;
end.
但是,这个Button怎么也显示不出来,请问这是怎么回事呢???
哪位大侠能把调试通的代码贴出来吗??
多谢!!!
 
btn.Parent := Self;
 
加上
bnt.parent:=form1;
 
procedure TForm1.Button1Click(Sender: TObject);
var btn: TButton
//我发现你的btn没有定义,
begin
btn:= tButton.Create(Self);
btn.Parent:=self;
btn.Left:=Form1.Width div 2;
btn.Top:=Form1.Height div 2;
btn.Caption:='Hello World!';
btn.Visible := true;
end;
 
sorry,我没看见,你把它定义在这:
private
{ Private declarations }
btn:TButton;
 
你没有定义BUTTON的父项控件是谁,叫它在哪儿显示呢?
procedure YourClick(Sender: TObject);

procedure TForm1.btn1Click(Sender: TObject);
begin
btn:= tButton.Create(Self);
btn.parent:=self;//加上这句,表示btn的父项是当前表单,这样你看得到按钮了。
btn.Left:=Form1.Width div 2;
btn.Top:=Form1.Height div 2;
btn.Caption:='Hello World!';
btn.Visible := true;
btn.onClick:=YourClick;//再给你加一个事件
end;

procedure TForm1.YourClick(Sender: TObject);
begin
showmessage('You press me!');
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
btn:= tButton.Create(Self);
btn.Left:=Form1.Width div 2;
btn.Top:=Form1.Height div 2;
btn.Caption:='Hello World!';
btn.parent:=self;
btn.Visible := true;
end;
 
大家都说了
就是还差指定它的parent呀
 
必须指明parent,的确如此,无需讨论了!!!!
 
指定他们的父母PARENT,就可以显示了!
 
procedure Tfrm_main.createbutton(sender: tobject);
begin
button:=ttoolbutton.Create (toolbar);
with button do
begin
parent:=toolbar;
top:=0;
left:=1;
height:=toolbar.Height;
ImageIndex :=0;
onclick:=clickbutton;
hint:='计算器|计算器';
end;
stsbar_main.Panels [3].Width :=button.Height+5
end;

 
>>btn.parent:=form1 、 panel1 //容器即可
 
只要指定它的PARENT属性为SELF就行了。
 
同一个答案,那么多人说,累不累呀?
 
哎,一人回答对了,就算了吗,何必浪费资源呢?[:D]
 
人气旺啊!
这样也不错,只是有点浪费时间!
问题解决了就结束吧
 
是不是简单的问题大家都想回答啊!
 
btn.Parent := Self;
 
使用
btn.parent:=self;
而不要使用
btn.parent:=form1;
(如果你建立了另外一個form的話,比如form2:tform1,那你的程序就會出錯)
 
后退
顶部