Q&A

  • MDI 에서 자식 윈도우 최대화 생성시 최대화되는 모습을 생략하고 싶어요
MDI 구조에서 현재 자식 윈도우를 생성할때 처음부터 최대화로 띄우도록 하였습니다.

그런데 문제는 부모 윈도우에 우선 윈도우가 나타났다가 최대화로 늘어나는 모습이 보인다는 것입니다.

현재 자식 윈도우 폼의 WindowState 속성을 wsMaximized로 설정한 상태이고 부모 윈도우에서 자식 윈도우 생성시 이미 생성된 상태인지를 체크하여 띄울때 ShowWindow(H, SW_SHOWMAXIMIZED)를 사용하여 보여줍니다.

그런 과정이 사용자에게 보이면 별로 보기에 좋지 않을거 같습니다.
아무튼 소스를 첨부합니다.

// 자식 윈도우 생성
procedure TMainForm.CreateChild(ChildForm : TFormClass);
var
  MyFormClass : TFormClass;
  WorkForm : TForm;
  H : THandle;
  i : Integer;
begin
  H := 0;

  // 이미 생성되어 있는지 찾는다.
  for i := 0 to Screen.CustomFormCount - 1 do
  begin
    if UpperCase('T' + Screen.CustomForms[i].Name) = UpperCase(ChildForm.ClassName) then
    begin
      H := Screen.CustomForms[i].Handle;
      Break;
    end;
  end;

  if H = 0 then // 생성되어 있지 않으면 생성한다.
  begin
    MyFormClass := TFormClass(ChildForm);

    if MyFormClass <> nil then
      WorkForm := MyFormClass.Create(Application.MainForm);
  end
  else // 생성되어 있으면 최상위 윈도우로 만든다.
  begin
    if IsIconic(H) then
      ShowWindow(H, SW_SHOWMAXIMIZED)
    else
      BringWindowToTop(H);
  end;
end;

고수님들의 답변 기다리겠습니다.
0  COMMENTS