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++;
 }
//  ========= 컴포넌트 크기 자동 조절  =======================
}
//—————————————————————————

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
지금이 바로 새 출발점. 인생이란 하루하루가 훈련이다. 우리 자신을 훈련하는 터전이다. 실패도 할 수 있는 훈련장이다. 살아있음이 흥겨운 훈련장이다. 지금 이 행복을 기뻐하지 않고 언제 어디서 행복해지랴. 이 기쁨을 발판삼아 온 힘으로 나아가자. 나의 미래는 지금 이 순간 이 곳에 있다. 지금 여기서 노력하지 않고, 언제 어디서 노력하랴. (오히라 미쓰요의 <그러니까 당신도 살아> 중에서)