【发布时间】:2015-04-11 08:49:15
【问题描述】:
希望有人能帮忙
我创建了一个具有表单的对象。我在运行时实例化这个对象。然后,用户可以通过菜单步骤实例化第二个(或多个)对象。所以两个子表单现在存在于一个父表单中。每个对象表单的 BorderStyle 设置为 none,Style 在运行时创建表单时设置为 MDIChild:
BorderStyle := bsNone;
FormStyle := fsMDIChild;
一切都好。表单没有边框。
现在我想平铺创建的两个表单。菜单 > 点击平铺
procedure TMainForm.Tile1Click(Sender: TObject);
begin
Tile;
end;
现在边界重新出现。 我需要一种摆脱边界的方法。
我已尝试逐步浏览对象集合并将 BorderStyle 显式设置为无:
procedure TMainForm.Tile1Click(Sender: TObject);
var
i: byte;
begin
Tile;
for i := 0 to GraphCollection.Count-1 do
(GraphCollection.Items[i] as TGraphForm).BorderStyle := bsNone;
end;
这不起作用。
有没有人在 Tile 或 Cascade 之后保留 bsNone 样式的解决方法。
【问题讨论】:
-
The documentation 表示将
BorderStyle更改为bsNone对 MDI 子级没有影响。也许这就是你在这里看到的。几个搜索结果提到覆盖CreateParams;你试过吗? -
什么是“graphcollection”? “Tile1Click”中的代码不应该是'for i:= 0 to MDIChildCount - 1 do if MDIChildren[i] is TGraphForm then TGraphForm (MDIChildren[i]).BorderStyle:= bsNone;' ?
-
MDI 对你能做的事情有很大的限制。预计这是不可能的。想办法在没有 mdi 的情况下做到这一点。
-
罗布。感谢cmets。当我平铺时,边框样式从 bsNone 更改为 bsSizeable。我想在耕种后保留 bsNone 风格。我已经尝试过 CreateParams 选项。没有快乐。
-
不。 Graphcollection 是创建的表单的 TObjectList。我已经尝试了这两种选择(根据我的帖子,类似于你所建议的)。没有快乐