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
가을에 피는 국화는 첫 봄의 상징으로 사랑받는 개나리를 시샘하지 않는다. 역시 봄에 피는 복숭아꽃이나 벚꽃을 부러워하지 않는다. 한여름 붉은 장미가 필 때, 나는 왜 이렇게 다른 꽃보다 늦게 피나 한탄하지도 않는다. 그저 묵묵히 준비하며 내공을 쌓고 있을 뿐이다. 그러다가 매미소리 그치고 하늘이 높아지는 가을, 드디어 자기 차례가 돌아온 지금, 국화는 오랫동안 준비해온 그 은은한 향기와 자태를 마음껏 뽐내는 것이다. (한비야)