德尔福尽量减少所有MDI儿童

时间:2013-05-20 15:06:47

标签: delphi mdi mdichild

我在最小化所有MDIChildren方面遇到了麻烦,遇到了MDIChild to minimize not activated properly

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

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儿童?

1 个答案:

答案 0 :(得分:3)

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

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;