C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1013] 개발시와 다른 해상도의 모니터에서 폼 컨트롤 크기 맞추기.
김태선 [cppbuilder] 21821 읽음    2010-10-27 00:19
가령 개발은 1680x1050 해상도에 맞춰 화면 컨트롤 배치 등 디자인된 프로그램이,
1280x1024 화면의 컴퓨터에서 실행된다면 1280 우측에 놓은 컨트롤은 당연히 안보이겠지요.
또 반대의 경우는 우측이 빈 화면이 생기게 됩니다.
화면에 꽉 차게 나오게 원하는 요구가 가끔씩 있기 때문에 이를 자동으로 조정했으면 좋겠죠.
그것도 한방에.
이를 위해 폼의 ScaleBy 가 준비되어 있습니다.
이 메소드를 사용해서 폼의 스케일 조정을 통해
별다른 노력 없이 화면 안으로 컨트롤이 꽉 차게 조정할 수 있습니다.

방법은 아래 코드와 같은데
보통  Create 이벤트 안에서 조정합니다.


void __fastcall TFormMain::FormCreate(TObject *Sender)
{

    const int disigne_width  = 1440;    // 개발당시 해상도
    const int disigne_height = 1024;
    if (Screen->Width <= 1280)            // 특정 해상도 이하이면.
    {
        Scaled = true;
        Height = Height * Screen->Height / disigne_height;
        Width  = Width  * Screen->Width  / disigne_width;
        ScaleBy(Screen->Width, disigne_width);

        // 강제로 맞춰보기.
//        int Screen_Width  = 1280;
//        int Screen_Height = 1024;
//        Width  = disigne_width;
//        Width  = Width  * Screen_Width  / disigne_width;
//        Height = Height * Screen_Height / disigne_height;
//        ScaleBy(Screen_Width, disigne_width);
    }

}

그러나 문제는 모든 것이 무난하게 다 크기가 조정될 것이라는 기대는 총족을 시키지 못한다는 것입니다.
모양이 아무래도 찌끄러지거나 하기 때문에 복잡하지 않은 폼에만 사용할 수 있습니다.
그렇기 때문에 실무에서는 그다지 유용하지 않을 수도 있습니다.

코드는 널리 알져진 것이고, 다른 화면 크기에 맞춰 화면 크기 비율을 계산하고,
컨트롤의 크기가 스케일에 맞게 변하도록 ScaleBy를 지정해 주는 것이 핵심입니다.

제일 좋은 것은 각 화면별로 별도로 디자인을 맞추는 것이죠.(수동이든 계산으로 조정하든지 간에)
대략 작은 화면용 큰 화면용 정도로만 구분해도, 화면 크기 차이에서 오는
디자인의 허전함은 상당히 커버할 수 있을 것입니다.


그럼..

+ -

관련 글 리스트
1013 개발시와 다른 해상도의 모니터에서 폼 컨트롤 크기 맞추기. 김태선 21821 2010/10/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.