关于控件(10分)

  • 主题发起人 主题发起人 兔子牙
  • 开始时间 开始时间

兔子牙

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有关于动态建立的控件,判断是否已free的属性....
 
自己Free后把它设置成nil,这应该养成一个习惯,呵呵。
 
控件数组 checkboxs.free;再次出错
 
好象只有DreamTiger的方法.
 
控件数组怎么nil,请赐教 checkboxs
 
checkboxs.free:=nil吗?
 
看看下面的例子就可以了:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
btnAdd: TButton;
btnDelete: TButton;
procedure btnAddClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
private
ButtonArray:array of TButton;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.btnAddClick(Sender: TObject);
var
i:integer;
begin
SetLength(ButtonArray,5);
for i := 0 to 4do
begin
ButtonArray := TButton.Create(Self);
ButtonArray.Top := 10 + i * 30;
ButtonArray.Left := 30;
ButtonArray.Height := 20;
ButtonArray.Width := 50;
ButtonArray.Parent := Self;
ButtonArray.Show;
end;
end;

procedure TForm1.btnDeleteClick(Sender: TObject);
var
i:integer;
begin
SetLength(ButtonArray,5);
for i := 0 to 4do
begin
ButtonArray.Free;
end;
end;

end.
 
btnDeleteClick 再点击就出错 access a(键植地址什么的??)
 
for i := 0 to 4do
begin
ButtonArray.Free;
ButtonArray := nil;
end;

这样就可以了。呵呵,开始只是为了演示怎么创建和删除。忘了置成nil。
 
btnAddClick 点两次以后,btnDeleteClick不起作用
 
DreamTiger 你试过了吗?free不起作用
 
btnAddClick点两次后,两次的Button重叠在一起,删除只能删除第二次的Button。
不要拘泥于我的例子,我只是告诉你怎么动态创建,怎么动态删除。
下面的例子应该是没有问题了。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
btnAdd: TButton;
btnDelete: TButton;
procedure btnAddClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
private
ButtonArray:array of TButton;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.btnAddClick(Sender: TObject);
var
i:integer;
begin
SetLength(ButtonArray,5);
for i := Low(ButtonArray) to High(ButtonArray)do
begin
if ButtonArray = nil then
begin
ButtonArray := TButton.Create(Self);
ButtonArray.Top := 10 + i * 30;
ButtonArray.Left := 30;
ButtonArray.Height := 20;
ButtonArray.Width := 50;
ButtonArray.Parent := Self;
ButtonArray.Show;
end;
end;
end;

procedure TForm1.btnDeleteClick(Sender: TObject);
var
i:integer;
begin
for i := Low(ButtonArray) to High(ButtonArray)do
begin
ButtonArray.Free;
ButtonArray := nil;
end;
end;

end.

 
非常谢谢dreamtiger 你的e_mail经常收吗?你在哪个城市?告之。
 
呵呵,只要我在计算机旁就长收。我在上海。
 
交你这个朋友真不错。需要你多多指点才行
 
这个话题可以结束了吧。呵呵。
 
分太少了。下回给你多些
 
后退
顶部