Visual Basic, C & C++
분류 Delphi

[펌] 폼 크기에 맞게 자동으로 컴포넌트 크기 조절하기

페이지 정보

본문

// 전체 적으로 들어 감
//  ========= 컴포넌트 크기 자동 조절  =======================
typedef struct{
    int Width;
    int Height;
    int Left;
    int Top;
}SDefaultContorl;
//  ========= 컴포넌트 크기 자동 조절  =======================
// 전체 적으로 들어 감 
 
 
// 각 폼에 들어감
  int DefaultWidth;
  int DefaultHeight;
// 각 폼에 들어감
 
void __fastcall TfrmGraphicOver::FormCreate(TObject *Sender)
{
//  ========= 컴포넌트 크기 자동 조절  =======================
 TWinControl *winCtrl;
 SDefaultContorl *defCtrl;
 int i;
 i = 0;
 while(i < ComponentCount){
  winCtrl = (TWinControl *)Components[i];
  defCtrl = new SDefaultContorl;
  defCtrl->Width = winCtrl->Width;
  defCtrl->Height = winCtrl->Height;
  defCtrl->Left = winCtrl->Left;
  defCtrl->Top = winCtrl->Top;
  winCtrl->Tag = (int)defCtrl;
  i++;
 }
 DefaultWidth = Width;
 DefaultHeight = Height;
//  ========= 컴포넌트 크기 자동 조절  =======================
}
//—————————————————————————
void __fastcall TfrmGraphicOver::FormResize(TObject *Sender)
{
//  ========= 컴포넌트 크기 자동 조절  =======================
 TWinControl *winCtrl;
 SDefaultContorl *defCtrl;
 int i;
 int iW, iH, iL, iT;
 float fZoomX, fZoomY;
 i = 0;
 fZoomX = float(Width) / float(DefaultWidth);
 fZoomY = float(Height) / float(DefaultHeight);
 while(i < ComponentCount){
  winCtrl = (TWinControl *)Components[i];
  defCtrl = (SDefaultContorl *)winCtrl->Tag;
  iW = defCtrl->Width * fZoomX;
  iH = defCtrl->Height * fZoomY;
  iL = defCtrl->Left * fZoomX;
  iT = defCtrl->Top * fZoomY;
//  if(iW < 1) iW = 1;
//  if(iH < 1) iH = 1;
//  if(iL < 1) iL = 1;
//  if(iT < 1) iT = 1;
  i++;
  if(iW < 1) continue;
  if(iH < 1) continue;
  if(iL < 1) continue;
  if(iT < 1) continue;
  winCtrl->Width = iW;
  winCtrl->Height = iH;
  winCtrl->Left = iL;
  winCtrl->Top = iT;
 }
//  ========= 컴포넌트 크기 자동 조절  =======================
}
//—————————————————————————
void __fastcall TfrmGraphicOver::FormDestroy(TObject *Sender)
{
//  ========= 컴포넌트 크기 자동 조절  =======================
 TWinControl *winCtrl;
 SDefaultContorl *defCtrl;
 int i;
 i = 0;
 while(i < ComponentCount){
  winCtrl = (TWinControl *)Components[i];
  defCtrl = (SDefaultContorl *)winCtrl->Tag;
  delete defCtrl;
  winCtrl->Tag = NULL;
  i++;
 }
//  ========= 컴포넌트 크기 자동 조절  =======================
}
//—————————————————————————

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
행복은 뭘까? 우리와 함께하는 것들. 숨쉬는 공기, 나무, 하늘, 가족, 친구. 이에 대한 고마움은 스쳐지나가기가 쉽다. 행복은 우리와 함께하는 것들의 가치를 아는 것이다. (신현림)