{$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 );
위와 같이 하더군요..
그런데...
맨 아래에 고정시키는 것은 없더군요..
어떻게 구현할수 있겠습니까?
편법입니다.
반대로 생각하세요.
나가 밑으로 가지 말고 다른걸 몽땅 위로보내는겁니다
단점 ====> 아래 소스를 보면 맨 늑게 생성된 놈이 항상위로 가는게 단점입니다. 아니면 메인폼 또는 특정폼으로 지정하시던지...
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;