forms - SendToBack 似乎在 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 将控件发送到“最后一个”位置而不是最后?GetBackIndex 返回 1 是否有特殊原因?
- 如何将控件发送回去?鉴于我的表单有很多控件,并且发送所有但需要控件的东西
BringToFront
是不可取的。
解决方案
由于我正在创建自己的控件,
ctrl := TSomeControl.Create(aForm);
ctrl.Parent := aForm;
ctrl.SendToBack;
可以替换为:
ctrl := TSomeControl.Create(aForm);
aForm.InsertObject(0 {desired index}, ctrl);
推荐阅读
- php - PHP MySQL Group by 多个条件在一个独特的情况下
- python - 使用 python 创建 Pipenv
- python - Django:如何在共享模板中添加静态文件?
- python - CNN模型Keras中分类预测结果的巨大差异
- google-apps-script - autoResizeColumns 处理时间过长
- nestjs - 使用警卫/装饰器的身份验证和角色:如何传递用户对象?
- python - 使用 GroupBy 计算 Pandas 数据框中的自定义速率函数
- node.js - 节点/角度 CORS 问题
- wpf - 我可以同时拥有代码隐藏 Click 事件和命令吗?
- javascript - Npm 和节点导入