是这样的,我的窗体上有一个scrollbox,一个button,另外有一个文本,我想点击窗体上的button,从文本里调动字符动态生成N个按钮,点击生成后的每个按钮时也可以执行从文本里调用的不用的事件,可以总是有问题,文本来代码如下:
文本:1#01#张小强#19780512#
1#01#王小鸡#18452514#
1#01#王达华#19874512#
..................
1#01#小春妹#19821547#
1#01#刘小丫#19811212#-----------以下是xxmmmx(踢踏)兄给的,但是情况比较复杂:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure myClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
sl,ss: TStringList;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
begin
sl:= TStringList.Create;
ss:= TStringList.Create;
ss.Delimiter:= '#';
sl.LoadFromFile('c:\a.txt');
end;procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
t, l : integer;
temp:TButton;
begin
t:=20;
l:=30;
for i := 0 to sl.Count-1 do
begin
ss.DelimitedText:= sl[i];
temp:=TButton.Create(Self);
temp.Caption := ss[2];
temp.Parent := Self;
temp.Top := t+40*i;
temp.Left := l;
temp.tag := i;
temp.onclick := myclick;
end;
end;procedure TForm1.myClick(Sender: TObject);
var
i: Integer;
begin
i:=(Sender as TButton).Tag;
ss.DelimitedText:= sl[i];
ss.Delimiter:= '#';
ShowMessage(ss[3]);
end;end.问题是每次点击button1的时候都会又生成一组按钮,我想应该可以做到在点击的时候判断后释放,因为我的窗体很复杂,点击button2时也会在上面生成一组按钮,还有button3,button4,用那种判断时,不起作用,一样的生成,不知道怎么回事
文本:1#01#张小强#19780512#
1#01#王小鸡#18452514#
1#01#王达华#19874512#
..................
1#01#小春妹#19821547#
1#01#刘小丫#19811212#-----------以下是xxmmmx(踢踏)兄给的,但是情况比较复杂:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure myClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
sl,ss: TStringList;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
begin
sl:= TStringList.Create;
ss:= TStringList.Create;
ss.Delimiter:= '#';
sl.LoadFromFile('c:\a.txt');
end;procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
t, l : integer;
temp:TButton;
begin
t:=20;
l:=30;
for i := 0 to sl.Count-1 do
begin
ss.DelimitedText:= sl[i];
temp:=TButton.Create(Self);
temp.Caption := ss[2];
temp.Parent := Self;
temp.Top := t+40*i;
temp.Left := l;
temp.tag := i;
temp.onclick := myclick;
end;
end;procedure TForm1.myClick(Sender: TObject);
var
i: Integer;
begin
i:=(Sender as TButton).Tag;
ss.DelimitedText:= sl[i];
ss.Delimiter:= '#';
ShowMessage(ss[3]);
end;end.问题是每次点击button1的时候都会又生成一组按钮,我想应该可以做到在点击的时候判断后释放,因为我的窗体很复杂,点击button2时也会在上面生成一组按钮,还有button3,button4,用那种判断时,不起作用,一样的生成,不知道怎么回事
for i := 0 to Scrollbox1.ControlCount - 1 do
begin
Scrollbox1.Controls[i].Destroy;
end;
但试了下程序出现错误,不明白
??
for i := 0 to Scrollbox1.ControlCount - 1 do
begin
Scrollbox1.Controls[i].Destroy;
end;
nx:integer;
temp:TButton;begin
nx:=10;
for nx := Scrollbox1.ControlCount-1 downto 0 do
begin
Scrollbox1.Controls[nx].Free;
end;
for nx:=0 to 9 do begin
temp:=tbutton.Create(self);
temp.Parent:=self;
temp.Top:=nx*10;
temp.Left:=0;
temp.Height:=10;
end;
end;
==>
temp.parent:=scrollbox1;