如题。
arraybtn: array of tbutton;
..... for I := 1 to 10 do
begin
if Not Assigned(arraybtn[i]) then
begin
arraybtn[i] := Tbutton.Create(Application);
arraybtn[i].Parent := Self;arraybtn := nil 是把资源释放掉,但是怎么把这些arraybtn都擦去?
为的是再创建一组button. 有什么好的办法吗?
arraybtn: array of tbutton;
..... for I := 1 to 10 do
begin
if Not Assigned(arraybtn[i]) then
begin
arraybtn[i] := Tbutton.Create(Application);
arraybtn[i].Parent := Self;arraybtn := nil 是把资源释放掉,但是怎么把这些arraybtn都擦去?
为的是再创建一组button. 有什么好的办法吗?
解决方案 »
- 如何置换stringgrid单元格里的图片
- 哪个函数可以把文件指针移到文件首
- 请问怎么使用polypolygon函数!它的函数体是怎么样的?
- 为什么在服务中无法访问注册表
- 我的原创delphi站点
- 我把系統做成dll後,它窗體左上角的圖標是一個小窗口,我可以改嗎?如何改呢。
- 关于定义函数的问题
- 怎样将一个表的一个字段的值全部放到一个ValueListEditor的Key列中?
- 怎么可以在一个工程组中让两个form先后显示?
- 那位大虾知道fbplus 它的dataset 字段列表里的displaylabel改变成中文,为什么不能修改数据
- 两个数据表相关联的问题!急,在线等待!
- 关于TTreeView控件的OnExpanded事件,急!!
如果你说的是释放,那么就应该执行Free;
具体方法是用循环通过Parent控件的Controls[]属性,把所属的button按照你需要的隐藏(或者删去)。
现在是如何把这些button从窗体上删除???
if (panel1.Controls[i] is TButton) then
(panel1.Controls[i] as TButton).Free;这样可以释放该panel1里面所有的button。
再创建下一组button之前需要把当前这一组button的资源
释放并且从form上消除,以便显示下一组button.
我用的是动态数组的方式, 请问:如何把动态创建的一组button消除????
释放了自然就没了,最多PAINT一下你的PANEL
for I := 1 to 10 do begin
arraybtn[i] := Tbutton.Create(Application);
用 button.free;
button:=nil;
方法二:
用 Parent的 RemoveControl 方法。
//删除按钮;
procedure DeleteLedButtonsFromParent(tParent: TComponent);
var
tTmp: TComponent;
i: Integer;
begin
with tParent do
begin
i := ComponentCount - 1;
while (i >= 0) do
begin
tTmp := Components[i];
if (tTmp is TfcShapeBtn) then
begin
RemoveComponent(tTmp);
tTmp.Free;
end;
Dec(i);
end;
end;
end;
//创建按钮;
procedure CreateButtons(iNum: Integer; jNum: integer; sCaption: array of
string; sCode: array of string; sUnitID: array of string; ScrBox: TScrollBox);
const
BtnHeight = 40;
BtnWidth = 50;
BtnTop = 4;
BtnLeft = 4;
BtnBetween = 4;
var
i, j, k, Nums: Integer;
tBtn: TfcShapeBtn;
begin
j := 0;
k := 0;
i := 0;
if iNum < 0 then
exit;
while (i <= iNum - 1) do
begin
if ((btnTop + (j + 1) * (BtnBetween + BtnHeight)) > ScrBox.Height) then
begin
j := 0;
k := k + 1;
end; tBtn := TfcShapeBtn.Create(ScrBox);
tBtn.Parent := ScrBox;
tBtn.Font.Charset := ANSI_CHARSET;
tBtn.Font.Name := 'ËÎÌå';
tBtn.Font.Size := 9;
tBtn.TextOptions.Alignment := taCenter;
tBtn.TextOptions.WordWrap := True;
tBtn.Width := BtnWidth;
tBtn.Height := BtnHeight;
tBtn.ShadeStyle := fbsNormal;
tBtn.Shape := bsRect;
tBtn.Left := btnLeft + K * (BtnBetween + BtnWidth);
tBtn.Top := btnTop + J * (BtnBetween + BtnHeight);
tBtn.Caption := sCaption[i];
tBtn.ShadeStyle := fbsNormal;
tBtn.Hint := sUnitID[i] + SEPARATOR_PHONE + sCode[i]; tBtn.ShowHint := True;
tBtn.OnClick := BtnProcedure;
Nums := i + 1;
if Nums <= jNum then
tBtn.Font.Color := clRed;
j := j + 1;
i := i + 1;
end;
end;呵呵,把分数给俺吧??