如何解决控件在关闭时没有父窗口
我最近更改了启动我的exe的参数,这导致了多个 关闭程序时将产生“控件没有父窗口”错误。
我原本以为这是一个释放错误,但是经过进一步的研究,我将其范围缩小到该函数,该函数对传递给exe的参数进行解码。
- Einvalidpointer
- 然后继续引发“控件没有父窗口”错误
如果下面的代码没有运行,则程序将按预期运行,并且可以正常终止而没有任何错误。
引发无父错误的组件是选项卡式笔记本。
完全错误:
控件'nb1'没有父窗口。路径:〜form1〜nb1。
function TForm1.Unhide(Param: Integer): string;
var
I : integer;
HideMe : String;
SeedInt : Integer;
UnHideMeS : String;
UnHideMe : Array of Char;
Swaps : Array of integer;
TempHolder : string;
CleanString : string;
begin
RandSeed := StrToInt(ParamStr(1));
UnHideMeS := ParamStr(Param);
UnHideMeS := LowerCase(UnHideMeS);
SetLength(UnHideMe,UnHideMeS.Length);
for I := 1 to UnHideMeS.Length do
begin
UnHideMe[I-1] := UnHideMeS[i];
end;
SetLength(Swaps,UnHideMeS.Length);
for I := 0 to UnHideMeS.Length do
begin
Swaps[i] := Random(UnHideMeS.Length);
end;
for I := UnHideMeS.Length -1 downto 0 do
begin
TempHolder := UnHideMe[Swaps[i]];
UnHideMe[Swaps[i]] := UnHideMe[i];
UnhideMe[i] := TempHolder[1];
end;
for I := 0 to UnHideMeS.length - 1 do
begin
CleanString := CleanString + UnHideMe[i];
end;
Result := CleanString;
CleanString := '';
TempHolder := '';
for I := 0 to length(UnHideMe) do
begin
UnHideMe[i] := 'a';
end;
SetLength(UnHideMe,0);
UnHideMe := nil;
for I := 0 to Length(Swaps) do
begin
Swaps[i] := 0;
end;
SetLength(Swaps,0);
Swaps := nil;
end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。