SendToBack 似乎在 Firemonkey 中不起作用?
SendToBack seems to not work in Firemonkey?
我正在开发 Firemonkey 应用程序,其主窗体包含大量控件。我想创建更多控件并使用 SendToBack
将它们发送回去。由于某种原因,这不能按预期工作。控制没有被发送到边后卫,他们停止了 1 控制。
这是一个示例设置:
- 创建一个新的 TForm。
- 在其上放置 3 个按钮,彼此重叠(Button1、Button2、Button3)。
- 在运行时,调用
Button3.SendToBack
- 按钮返回,但仅返回 1 个位置。 Button1 仍然是最后面的。
检查 TForm 源代码显示 SendToBack
调用 SendChildToBack
,它确定最后位置为:
function TCommonCustomForm.GetBackIndex: Integer;
begin
Result := 1;
end;
不应该是0吗?
问题:
- 为什么 SendToBack 将控件发送到 "last but one" 位置而不是最后面? GetBackIndex 返回 1 是否有特殊原因?
- 如何将控件发送回后台?鉴于我的表单有很多控件,并且将除需要的控件之外的所有内容都发送到
BringToFront
前面是不可取的。
由于我正在创建自己的控件,
ctrl := TSomeControl.Create(aForm);
ctrl.Parent := aForm;
ctrl.SendToBack;
可以替换为:
ctrl := TSomeControl.Create(aForm);
aForm.InsertObject(0 {desired index}, ctrl);
我正在开发 Firemonkey 应用程序,其主窗体包含大量控件。我想创建更多控件并使用 SendToBack
将它们发送回去。由于某种原因,这不能按预期工作。控制没有被发送到边后卫,他们停止了 1 控制。
这是一个示例设置:
- 创建一个新的 TForm。
- 在其上放置 3 个按钮,彼此重叠(Button1、Button2、Button3)。
- 在运行时,调用
Button3.SendToBack
- 按钮返回,但仅返回 1 个位置。 Button1 仍然是最后面的。
检查 TForm 源代码显示 SendToBack
调用 SendChildToBack
,它确定最后位置为:
function TCommonCustomForm.GetBackIndex: Integer;
begin
Result := 1;
end;
不应该是0吗?
问题:
- 为什么 SendToBack 将控件发送到 "last but one" 位置而不是最后面? GetBackIndex 返回 1 是否有特殊原因?
- 如何将控件发送回后台?鉴于我的表单有很多控件,并且将除需要的控件之外的所有内容都发送到
BringToFront
前面是不可取的。
由于我正在创建自己的控件,
ctrl := TSomeControl.Create(aForm);
ctrl.Parent := aForm;
ctrl.SendToBack;
可以替换为:
ctrl := TSomeControl.Create(aForm);
aForm.InsertObject(0 {desired index}, ctrl);