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
인내심을 가져라. 때가 되면 모든 것은 변한다. 조바심이 가을의 영광을 만들거나 살을 에는 겨울을 끝낼 수 는 없다. 근심을 오랫동안 마음에 품고 있으면 그만큼 마음의 평정을 회복하기 어려워진다. 나쁜 생각을 스스로 떨쳐버려라. 나쁜 생각은 영혼의 뿌리를 갉아먹는 악이다.