|
이건 아주 간단한 방법이 있습니다.
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();
: }
: //---------------------------------------------------------------------------
|