我创建一个自定义Tpanel我在内心里把各种自定义组件一TbitBtn ...我怎么能释放一个Tpanel这有一个调用来释放Tpanel
procedure Panel_Comp(Location: TWinControl; NumOfComp: Integer;Left,Top,Height,width:Integer);
begin
MyPanel := TsPanel.Create(Conf);
MyPanel.Name := 'MyPanel' + IntToStr(NumOfComp);
MyPanel.Parent := Location;
MyPanel.Left := Left;
MyPanel.Top := Top;
MyPanel.Height := Height;
MyPanel.Width := width;
MyPanel.Caption := '';
end;
和我这样称呼它
Panel_Comp(Conf.ScrollBox1,1,8,10,70,322);
在相同的逻辑我把新的面板的其它自定义组件内侧包括一个tBitbtn的具有onclick事件
..
procedure BitBtn_Comp(Location: TWinControl; NumOfComp: Integer; Left,Top,Height,Width,ImageNum: Integer);
begin
MyBitBtn := TBitBtn.Create(Conf);
......
MyBitBtn.tag := NumOfComp;
MyBitBtn.OnClick:= Conf.CloseCurrentPanel;
end;
主要Forn TConf.CloseCurrentPanel;
procedure TConf.CloseCurrentPanel(Sender: TObject);
var
panelComp: TComponent;
begin
panelComp := FindComponentEx('Conf.MyPanel'+ IntToStr(TBitBtn(Sender).tag);
TPanel(panelComp).Free;
Application.ProcessMessages;
end;
当我打电话,我得到的访问冲突...... 我想的东西,我必须在自由的面板释放面板里面的所有组件,但我怎么面板之前释放BitBtn并继续行动点击事件?
这里是FindComponetEx功能,而不是你需要它...
function FindComponentEx(const Name: string): TComponent;
var
FormName: string;
CompName: string;
P: Integer;
Found: Boolean;
Form: TForm;
I: Integer;
begin
// Split up in a valid form and a valid component name
P := Pos('.', Name);
if P = 0 then
begin
raise Exception.Create('No valid form name given');
end;
FormName := Copy(Name, 1, P - 1);
CompName := Copy(Name, P + 1, High(Integer));
Found := False;
// find the form
for I := 0 to Screen.FormCount - 1 do
begin
Form := Screen.Forms[I];
// case insensitive comparing
if AnsiSameText(Form.Name, FormName) then
begin
Found := True;
Break;
end;
end;
if Found then
begin
for I := 0 to Form.ComponentCount - 1 do
begin
Result := Form.Components[I];
if AnsiSameText(Result.Name, CompName) then Exit;
end;
end;
Result := nil;
end;
谢谢你这个很好的作品.... – azrael11 2012-08-10 01:07:24
还有一个关于这个问题...不是开始另一个话题。你能告诉我如何使用我的FindComponentEx找到特定的面板,所以我可以通过wParam或lParam删除它...谢谢 – azrael11 2012-08-10 01:08:20
这很好...再次感谢您的帮助... – azrael11 2012-08-12 00:35:48