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
[529] 복잡한 폼 디자인은 프레임을 사용해서 간편하게 하자.
김태선 [jsdkts] 7160 읽음    2005-12-05 13:21
프레임은 한 폼에 복잡한 디자인을 넣을때 매우 유용합니다.
탭컨트롤 같은 좋은 컴포넌트가 있지만, 아무래도 그 폼이 떠 있을때
필요지 않은 화면을 위해 불필요하게 리소스가 사용되는 문제가 있죠.
또한 한 폼에 몰아서 코딩해야 하는 문제도 있죠.


아래는 메신저 프로그램에서 메신저 메인창에 로그인 화면을 붙여 넣는 예제입니다.
MSN 에서 로그인 되는 듯한 효과를 내기 위한 방법입니다.
실제 로그인 관련 코딩은 TFrame_Login 클래스에 다해 주므로,
메인 폼에 몰아 코딩하지 않아도 되므로 메인 쪽이 간편해지고
전체 소스가 보기 편하고 관리하기도 쉽습니다.
TFrame_Login 에서 메인쪽에 필요한 기능을 부를때는 직접 부르지 않고
중간에 CMainInterface 클래스를 경유해서 부르는 방식을 사용해 컴파일 시간을 절약했습니다.

File->New->Frame 선택해 TFrame_Login 로 프레임에 로긴화면과 기능을 구현

메인 클래스의 적당한 섹션에 선언
    TFrame_Login  *FrameLogin;

메인 Create 이벤트에서 만든 프레임 생성
    // 로긴창을 위한 프레임을 동적으로 생성하고 이를 메인화면에 붙이고 위치를 조정한다.
    FrameLogin = new TFrame_Login(this); // 현재 폼을 오너로 해서 생성.
    TRect  rect = Rect(0, 0, ClientWidth, ClientHeight); // 현재 폼을 전부 덮는 크기로 지정.
    FrameLogin->Dock(this, rect);  // 현재 폼에 도킹시켜 보이게 한다.

메인 폼리사이즈 이벤트에서 화면 크기 변경에 반응시키기.
    if (FrameLogin)
    {
        FrameLogin->Width = ClientWidth;
        FrameLogin->Height = ClientHeight;
        return;
    }

메인에서 해당 프레임의 사용이 끝나면 소멸
    if (FrameLogin)
    {
        delete FrameLogin;  // 바이 바이..
        FrameLogin = NULL;
    }

이상 허접 팁이었습니다.
김태선 [jsdkts]   2005-12-06 13:58 X
주의 할 것은, 프레임을 지울때 해당 프레임의 이벤트가 실행중 일때 지우면 에러에 난감하게 될 겁니다. 프레임 이벤트 수행후에 지우면 됩니다.

+ -

관련 글 리스트
529 복잡한 폼 디자인은 프레임을 사용해서 간편하게 하자. 김태선 7160 2005/12/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.