주말 잘 보내셨어요?
두가지 질문
(1) MDI의 child폼의 생성시 Max화 할때 펼침모습 방지를 위한 질문을 드리고 팁란을 찾은 결과 전철호님의 팁란에서 귀한 자료를 발견, 적용시켜 보았습니다.
제가 원하는건 form style을 max로 하고 생성했을때 처럼
폼자체가 화면에 가득히 붙어서 title바엔... 메인폼-[자식폼]이렇게
메인폼의 메뉴가 그다음에 위치하고 그 밑에 자식 폼이 뜨는거죠.
즉 화면 하나를 사용하는 느낌처럼말입니다.
한데, 팁란에 써주신거를 사용하면 메인 폼안에 자식폼이 크기만 큰 크기로 자식놈의 타이틀바도 갖은채 생성됩니다.
그리하여 생성후에 maximized를 또 해줘야 합니다. 그럼, 펼침모습이 또 생기고요.
어찌하면 좋을까요? 흑흑,,
참고로, 아래는 전철호님의 팁란에서 퍼온 글을 옮기겠습니다.
MDI Form시 Child Form을 Max로 놓고 생성시 펄져보임 현상 방지하는 방법
OnShow Event에 다음과 같이 등록하면 된다.
그리고 WindowState를 Normal로 셋팅을 해 주기 바란다.
Procedure TFormChild.FormShow(Sender: TObject);
Var
iHeight : Integer;
iWidth : Integer;
Begin
// FormMain은 MDI 메인폼을 의미한다.
// 단 메인폼에 툴바,상태바를 생성 했을 경우는
// 두개의 콘트롤의 Height를 가산하는 것을 잊지 말기 바란다.
iHeight := FormMain.ClientHeight;
iWidth := FormMain.ClientWidth;
iHeight := iHeight - GetSystemMetrics (SM_CYDLGFRAME) - 1;
iWidth := iWidth - GetSystemMetrics (SM_CXDLGFRAME) - 1;
SetBounds (0, 0, iWidth, iHeight);
End;
아래 팁을 이용하여 클라이언트 영역에 차일드 폼이 꽉차게 생성하시고요
다음 코딩으로 차일드 폼에 캡션 부분을 제거하셔서 사용하시면 되겠네요..
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override; /Override 시켜서 갭션 없앰.
end;
procedure TfrmS01_U.CreateParams(var Params: TCreateParams);
begin
inherited Createparams(Params);
with Params do
Style := (Style or WS_CHILD or WS_BORDER) and not WS_DLGFRAME;
end;
이런 식으로 하시면 차일드 폼에 캡션은 없앨 수 있습니다.
그리고 메뉴바있는 부분에 차일드 폼에 캡션을 위치 시키시는거는 차일드 폼 생성시에 메뉴바 밑으로 패널 같은거 하나 생성 시켜서 캡션 형태로 만드셔서 해결 하시면 될꺼 같네요..
제가 설명 해놓구 넘 두서 없이 해놓은거 같네요..
푸하하 wrote:
> 주말 잘 보내셨어요?
> 두가지 질문
> (1) MDI의 child폼의 생성시 Max화 할때 펼침모습 방지를 위한 질문을 드리고 팁란을 찾은 결과 전철호님의 팁란에서 귀한 자료를 발견, 적용시켜 보았습니다.
> 제가 원하는건 form style을 max로 하고 생성했을때 처럼
> 폼자체가 화면에 가득히 붙어서 title바엔... 메인폼-[자식폼]이렇게
> 메인폼의 메뉴가 그다음에 위치하고 그 밑에 자식 폼이 뜨는거죠.
> 즉 화면 하나를 사용하는 느낌처럼말입니다.
> 한데, 팁란에 써주신거를 사용하면 메인 폼안에 자식폼이 크기만 큰 크기로 자식놈의 타이틀바도 갖은채 생성됩니다.
> 그리하여 생성후에 maximized를 또 해줘야 합니다. 그럼, 펼침모습이 또 생기고요.
>
> 어찌하면 좋을까요? 흑흑,,
> 참고로, 아래는 전철호님의 팁란에서 퍼온 글을 옮기겠습니다.
> MDI Form시 Child Form을 Max로 놓고 생성시 펄져보임 현상 방지하는 방법
> OnShow Event에 다음과 같이 등록하면 된다.
> 그리고 WindowState를 Normal로 셋팅을 해 주기 바란다.
>
> Procedure TFormChild.FormShow(Sender: TObject);
> Var
> iHeight : Integer;
> iWidth : Integer;
> Begin
> // FormMain은 MDI 메인폼을 의미한다.
> // 단 메인폼에 툴바,상태바를 생성 했을 경우는
> // 두개의 콘트롤의 Height를 가산하는 것을 잊지 말기 바란다.
> iHeight := FormMain.ClientHeight;
> iWidth := FormMain.ClientWidth;
> iHeight := iHeight - GetSystemMetrics (SM_CYDLGFRAME) - 1;
> iWidth := iWidth - GetSystemMetrics (SM_CXDLGFRAME) - 1;
> SetBounds (0, 0, iWidth, iHeight);
> End;
>