如何确定Delphi中多个可见表单的Z顺序?

时间:2017-06-11 08:48:47

标签: delphi

使用Delphi 7.在TPanel上有4个非模态可见形式(TPanel是表格的父级)。我在各种表单上使用Show,Hide,BringToFront,SendToBack,它工作正常。

问题在于,在任何时候我都想以编程方式确定表单的Z顺序。例如,Form2位于顶部,后面是Form3,然后是Form1,最后是Form4。

或者以稍微不同的方式表达:给出任何两种非模态的可见形式,例如: Form2和Form3,如何以编程方式确定哪一个在另一个之上?

我尝试过Screen.Forms,但它不起作用 - 无论表格的实际可见Z顺序如何,它总是以相同的顺序给我表格。

我读到了Windows函数GetTopWindow和GetNextWindow,但在我尝试使用它之前,我想知道是否有更简单的方法。特别是如果我只有两个同一父母的表格,有没有一种简单的方法可以知道哪一个在另一个之上呢?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:3)

使用GetWindow传递[OR]GW_HWNDNEXT来遍历Z顺序。

你说你不想使用这种方法并寻找更简单的东西。没有比这更简单的了。