2

我在最小化我的所有 MDIChildren 时遇到了麻烦,并且遇到了MDIChild 以最小化未正确激活

我最小化所有孩子的代码是:

procedure TMainWindow.MinimizeAll1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to MDIChildCount - 1 do begin
    MDIChildren[i].WindowState := wsMinimized;
    //ShowWindow(MDIChildren[i].Handle, SW_MINIMIZE)
  end;
end;

我尝试了两种方法(SW_MINIMIZE 和 wsMinimized),但由于某种原因,最后一个 MDI 子窗体没有被最小化。但是,如果您尝试再次最小化所有孩子,它会起作用。最小化所有工作在 Delphi XE 的 MDIAPP 示例中。如何在 1 个例程中正确最小化所有 MDI 儿童?

4

1 回答 1

3

最小化 MDI 子窗口会更改窗体在MDIChildren[]. 此索引属性始终返回 中的活动 MDI 子项MDIChildren[0]。所以,做你想做的最干净的方法是先复制所有的表格,然后开始最小化。

var
  i: Integer;
  Forms: array of TForm;
....
SetLength(Forms, MDIChildCount);
for i := 0 to high(Forms) do
  Forms[i] := MDIChildren[i];
for i := 0 to high(Forms) do
  Forms[i].WindowState := wsMinimized;
于 2013-05-20T15:15:02.040 回答