버튼을 동적생성하여 TObjectList 에 추가했습니다.
그런데 폼디자인시에 만들어졌던 버튼을 클릭하여 동적생성된 Object를 삭제하면, 에러가 없는데
동적생성한 버튼을 클릭하여 삭제하면 에러가 발생합니다.
생성하는 것에는 아무런 문제가 없는데 말입니다.
좀 봐주시겠어요?
아래는 소스를 간추려본것입니다.
private
ItemList: TObjectList;
NewBtn: TButton;
// 새로운 버튼을 생성하는 프로시져
procedure BtnCreate;
begin
NewBtn := TButton.Create(self);
ItemList.Add(NewBtn);
with NewBtn do begin
Parent := MainForm;
Name := 'Btn1';
Left := Mouse.CursorPos.X;
Top := Mouse.CursorPos.Y;
Visible := True;
OnClick := NewBtnClick;
end;
end;
// 동적 생성된 버튼의 클릭이벤트
procedure TForm1.NewBtnClick(Sender: TObject);
begin
ItemList.Free; <== 이곳에서 에러가 발생합니다.
end;
// 버튼을 생성한다(동적생성된 버튼이 아님)
procedure TForm1.Button1Click(Sender: TObject);
begin
BtnCreate;
end;
// TObjectList 를 삭제한다.(동적생성된 버튼이 아님)
procedure TForm1.Button2Click(Sender: TObject);
begin
ItemList.Free; <== 이곳에선 에러가 발생하질 않습니다.
end;