▼ Mr.XRAYさん
回答ありがとうございました。結局以下のようにしてみました。
SetForegroundWindow, SetForegroundWindowがあると
ウィンドウの表示がおかしいのではずしています。
FWHeight、FWWidthは、重ねて表示を実行したWindowのサイズです。
まだ、修正の余地がありますが、実際に実装するときに検討します。
以上 また、よろしくお願いします。
FWHeight := Screen.Forms[0].Height;
FWWidth := Screen.Forms[0].Width;
procedure TSDISubForm.menuCascadeWindowClick(Sender: TObject);
var
WndHandleList: array of HWND;
i: integer;
begin
SetLength(WndHandleList, Screen.FormCount);
for i := 0 to Screen.FormCount - 1 do begin
Screen.Forms[i].Height := SDIMainForm.FWHeight;
Screen.Forms[i].Width := SDIMainForm.FWWidth;
Screen.Forms[i].BorderStyle := bsSingle;
WndHandleList[i] := Screen.Forms[i].Handle;
//SetForegroundWindow(WndHandleList[i]);
end;
CascadeWindows(0,
0, {MDITILE_SKIPDISABLED,}
nil,
Screen.FormCount,
Addr(WndHandleList[0]));
for i := 0 to Screen.FormCount - 1 do begin
Screen.Forms[i].BorderStyle := bsSizeable;
end;
//SetForegroundWindow(Handle);
end;
|