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

C++빌더 Q&A
C++Builder Programming Q&A
[46875] Re:컴포넌트 크기 자동조절
장성호 [nasilso] 1522 읽음    2006-10-25 15:21
이건 아주 간단한 방법이 있습니다.
Align과 Anchors를 이용하시면 됩니다.

Control을 Parent를 기준으로 동작합니다.
Parent가 Panel이면 Panel의 크기가 조정됨에 따라 같이 움직이죠

Align은 alNone , alBotton, alLeft , alRight , alTop , alNone , alCustom , alClient 가 있습니다.
한번 폼에 Panel을 하나 올려놓고 Panel의 Align의 속성을 바꿔보세요
몇번만 해보면 어떤식으로 동작하는지 금방 알것입니다.

두번재로
Anchors가 있습니다. 뜻그대로  배가 항구에 정박할때 닻을 내리듯 Control이 Panent의 특정위치에
닷을 내려 고정시킵니다.

Anchors 는 akLeft ,alRight , akTop , akBotton  네가지가 있습니다.
기본이 akLeft + akTop으로 되어있습니다. 그래서 Parent가 사이즈가 바뀌어도 같은위치에 고정되어있습니다.
Parent를 기준으로 왼쪽간격과 윗쪽간격이 일정하게 해주는 의미입니다.
만약 akRight를 추가해주면 Parent를 기준으로 오른쪽 간격이 parent가 크거나 작거나 일정하게 유지시켜 줍니다.
이것만 조정하면 일정하게 같이 커지거나 작아집니다.

님의 하신방법은 특별하게 한두 control만 할때는 쉽게 가능할수도 있겠지만
잘 안되는 방법입니다.

문제 1
예를 들어 ComboBox같은 경우 Font가 바뀌지 않으면 .. Height는 변하지 않거든요
이런 컨트롤이 충분히 여러가지 있을수 있습니다.


문제 2

Form의 위에 있는 Control은 저렇게 조정이 되겠지만

Form위의 Panel위에 있는 Control의 경우..
그러니까 Parent가 Form이 아닌 control의 경우 조정이 잘안되겠지요
그럼 Parent가 될수 있는 control은 또 따로 .. 찾아서 코딩해주기도 쉽지 않고요

그래서 위에서 처럼 Anchors와  Align을 이용합니다.

그럼


왕초보 님이 쓰신 글 :
: 폼의 크기가 변경될 경우 폼안의 컴포넌트 크기를 폼의 크기에 맞추어 일정한 비율로 재조절하는 예라고 하는데
: 의도한 결과가 나오지 않습니다.
: 증가에 비해 감소가 빠른 속도로 일어나더군요..
: 코드 보시고 설명해주셨으면 합니다.
:
: Contols[i]가 의미하는 것도 알고 싶구요
:
: 그럼 부탁드립니다.
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: int OldHeight, OldWidth;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:         : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::FormResize(TObject *Sender)
: {
:         int i;
:         float px,py,t;
:
:         for(i=0;i<ControlCount;i++)
:         {
:                 px=(float)Width/(float)OldWidth;
:                 py=(float)Height/(float)OldHeight;
:
:                 t=(Controls[i]->Top);
:                 Controls[i]->Top=int(t*py);
:
:                 t=Controls[i]->Left;
:                 Controls[i]->Left=int(t*px);
:
:                 t=Controls[i]->Height;
:                 Controls[i]->Height=int(t*py);
:
:                 t=Controls[i]->Width;
:                 Controls[i]->Width=int(t*px);
:         }
:
:         OldHeight=Height;
:         OldWidth=Width;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
:         OldHeight=Height;
:         OldWidth=Width;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:         Close();
: }
: //---------------------------------------------------------------------------

+ -

관련 글 리스트
46874 컴포넌트 크기 자동조절 왕초보 948 2006/10/25
46875     Re:컴포넌트 크기 자동조절 장성호 1522 2006/10/25
63940         Re:Re:오 감사합니다~ 이런 속성을 이용하는 군요. greenvy 737 2011/03/17
46880         Re:Re:컴포넌트 크기 자동조절 왕초보 972 2006/10/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.