Q&A

  • 폼을 가장 밑으로 고정
  {$EXTERNALSYM HWND_TOP}
  HWND_TOP = 0;
  {$EXTERNALSYM HWND_BOTTOM}
  HWND_BOTTOM = 1;
  {$EXTERNALSYM HWND_TOPMOST}
  HWND_TOPMOST = HWND(-1);
  {$EXTERNALSYM HWND_NOTOPMOST}
  HWND_NOTOPMOST = HWND(-2);

위의 를 참고해서 모두 해보았더니..

폼을 다른 창보다 위로 고정시키는 것은 있더군요..

SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE );

위와 같이 하더군요..

그런데...

맨 아래에 고정시키는 것은 없더군요..
어떻게 구현할수 있겠습니까?  

3  COMMENTS
  • Profile
    홍성락 2002.07.25 04:37
    hsr///////////////////////////////////////////////////////////
    편법입니다.
    반대로 생각하세요.
    나가 밑으로 가지 말고 다른걸 몽땅 위로보내는겁니다
    단점 ====> 아래 소스를 보면 맨 늑게 생성된 놈이 항상위로 가는게 단점입니다. 아니면 메인폼 또는 특정폼으로 지정하시던지...

    procedure TForm2.FormActivate(Sender: TObject);
    var
        Form : TForm;
        i : integer;
    begin
        for i := 0 to Application.ComponentCount-1 do begin
           if  (Application.Components[i] is TForm) then begin
             Form := TForm(Application.Components[i]);
             if Form <> Form2 then //자신만 제외한고 나머진 위로
                SetWindowPos( Form.Handle, HWND_TOPMOST , 0, 0, 0, 0,
                   SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOMOVE );
           end;
        end;
    end;

    그리고 단점2, 원하는 폼을 맨 마지막에 생성시키던지 아니면
    모든 폼에 추가하세요
    procedure TForm3.FormActivate(Sender: TObject);
    begin
           SetWindowPos( Handle, HWND_TOPMOST , 0, 0, 0, 0,
                   SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOMOVE );
    end;

  • Profile
    김수경 2002.07.24 20:50
    Form의 위치를 조정하십시오.

      Top := Screen.Height - Height;
      Left := Screen.Width - Width;


  • Profile
    한대필 2002.07.24 21:24
    질문을 잘못 알아 들으셨나 보군요...
    화면상의 위와 아래가 아니구요

    제 질문은
    제가 만든 폼이 다른 어떤 폼들보다
    밑에 깔려 있어야 한다는 것입니다.
    항상요!