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
우리의 꿈은, 뒤에 오는 사람들이 우리를 딛고 우리 위에서 이루게 하는 것입니다. 나는 평생을 창조적인 작업을 위해서 살아왔습니다. 누가 하라고 해서 한 것이 아니라 그것이 나의 삶 그 자체의 즐거움이었기 때문입니다. 현실을 직시하며 현재의 수준을 유지하라. 그리고 더 먼 곳을 향하는 시야를 가져라.