代码之家  ›  专栏  ›  技术社区  ›  Kromster Satyajit

sendtoback似乎不在Firemonkey工作?

  •  0
  • Kromster Satyajit  · 技术社区  · 6 年前

    我正在使用一个包含很多控件的主窗体来处理FireMonkey应用程序。我想创建更多的控件并使用 SendToBack .出于某种原因,这并不能按预期工作。控件没有被发送到完全返回,它们在缺少1个控件时停止。

    下面是一个示例设置:

    • 创建新的tform。
    • 将3个按钮放在上面,相互重叠(按钮1、按钮2、按钮3)。
    • 在运行时,调用 Button3.SendToBack -按钮返回,但只返回1个位置。按钮1仍然是最后面的。

    检查tform源代码会发现 圣背 电话 SendChildToBack ,确定最后面的位置为:

    function TCommonCustomForm.GetBackIndex: Integer;
    begin
      Result := 1;
    end;
    

    不是应该是0吗?

    问题:

    • 为什么sendtoback将控件发送到“最后但只有一个”位置而不是最后面?GetBackIndex返回1是否有特殊原因?
    • 如何将控件发送到后面?鉴于我的窗体有很多控件,并且发送了除需要的控件之外的所有控件 BringToFront 是不受欢迎的。
    1 回复  |  直到 6 年前
        1
  •  0
  •   Kromster Satyajit    6 年前

    因为我正在创建自己的控件,

    ctrl := TSomeControl.Create(aForm);
    ctrl.Parent := aForm;
    ctrl.SendToBack;
    

    可替换为:

    ctrl := TSomeControl.Create(aForm);
    aForm.InsertObject(0 {desired index}, ctrl);