unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,ComCtrls;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
sp1:tshape;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
sp1:=tshape.Create(nil);
sp1.Parent:=form1.PageControl1.Pages[0];
sp1.Name:='aaaa';
end;
procedure TForm1.Button2Click(Sender: TObject);
var sp1:tshape;
begin
tshape(form1.PageControl1.Pages[0].FindChildControl('aaaa')).Destroy;
//sp1.Destroy;
end;
end.
點擊button1,動態生成 一個tshape,點擊button2時洗掉tshape時老是出錯~~要如何才能實作??
麻煩各位大俠支招~~在線等~~
uj5u.com熱心網友回復:
補充:是要如何根據創建時的NAME來洗掉這個控制元件~~uj5u.com熱心網友回復:
控制元件名.free 不行么uj5u.com熱心網友回復:
FindChildControl只能找TWinControl及其子類,TShape不是TWinControl子類,找出來的是nil,當然會報錯可以用PageControl1.Pages[0].Controls[]遍歷
uj5u.com熱心網友回復:
用FindComponent也可以
uj5u.com熱心網友回復:
記住 你動態創建的 控制元件名 或 Handle 然后 用 FindComponent 查到 free掉就行了。 建的時候要記錄建的名字或handle,要不你怎么找!uj5u.com熱心網友回復:
直接Free~~
uj5u.com熱心網友回復:
freeandniluj5u.com熱心網友回復:
出錯應該是沒有找到吧uj5u.com熱心網友回復:
建立一個保存句柄的陣列,保存動態控制元件的名柄,由資料指定名柄,再Free操作。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113182.html
標籤:VCL組件開發及應用
