在我继承的一些遗留D7代码中,我正在迁移到XE5,我找到了下面的代码。
该评论指出,如果它是从非WinControl创建的,它会欺骗Windows认为它是一个子表单。代码库中有一个地方,其中使用AOwner作为nil调用Create。 (在电话会议时,表格 可用,所以不确定他们为什么这样做......)
有关程序员目标是什么的任何建议吗?
?XDEBUG_SESSION_START=<xxxxxxx>
答案 0 :(得分:4)
此代码早于和松散地模仿在Delphi 8中添加到TCustomForm
的{{3}}属性。假设AOwner
是另一个Form,请在现代Delphi版本中使用这些属性,例如:< / p>
constructor TFormX.Create( AOwner: TComponent);
begin
inherited Create(AOwner);
if AOwner Is TCustomForm then
PopupParent := TCustomForm(AOwner);
end;
此外,使用fCreateParamsHasBeenRun
是错误的。每次重新创建表单窗口时都会调用CreateParams()
,因此每次都需要应用WndParent
,而不是有条件地应用CreateParams()
。如果您需要保持AOwner
逻辑(例如TCustomForm
是非fCreateParamsHasBeenRun
窗口控件),则需要删除 NSString *jsonString;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
if (!jsonData) {
NSLog(@"error: %@", error.localizedDescription);
jsonString = @"{}";
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF16StringEncoding];
}
return jsonString;
。