我在最小化所有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儿童?
答案 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;