当客户端连接到我的代码时,我想Tabsheet
动态添加一个:PageControl
IdCmdTCPServer
procedure TForm1.IdCmdTCPServer1Connect(AContext: TIdContext);
var
ATabSheet: TTabSheet;
begin
ATabSheet := TTabSheet.Create(PageControl1);
ATabSheet.PageControl := PageControl1;
ATabSheet.Caption := 'Hello!';
{...}
end;
没问题,但是当关闭应用程序时,我会收到带有消息的 EOSError:“系统错误。代码:1400。无效的窗口句柄”。我已经在TButton
'sOnClick
事件中添加了这个代码块,应用程序将毫无问题地关闭。有没有更安全的方法来做到这一点?
在David Heffernan的帮助下,我改变了我的方法:
....
type
TMyThrd = class(TThread)
protected
procedure Execute; override;
end;
...
procedure TMyThrd.Execute;
begin
with TTabsheet.Create(Form1.PageControl1) do
PageControl := Form1.PageControl1;
end;
...
procedure TForm1.cmdAddTabCommand(ASender: TIdCommand);
begin
with TMyThrd.Create(True) do
begin
FreeOnTerminate := True;
Resume;
end;
end;
并命令测试结果:
但提到的问题是钢铁在应用程序关闭时发生!