,c++builder中有没有简单,效率高的控件自适应窗体的方法

各位高手,c++builder中有没有简单,效率高的控件自适应窗体的方法
我在窗体的OnResize()事件中调用了一个自己写的函数,由于我的窗体中GroupBox下有PageControl,PageControl下有TabSheet,TabSheet下有ScollBox,ScollBox下有Image,所以我的代码会进行多次嵌套循环,导致效率很低。调用的函数代码如下:
bool __fastcall TFormResize::ResizeAll(TForm* pForm)
{
  if(pForm->Align == alClient)
  {
  exit(0);
  return false;
  }
  /*保存缩放后的窗体尺寸*/
  pNewFormSize->formWidth = pForm->Width;
  pNewFormSize->formHeight = pForm->Height;
  pNewFormSize->formLeft = pForm->Left;
  pNewFormSize->formTop = pForm->Top;
   
  /*缩放比例因子计算*/
  pRatio->heightRatio = pNewFormSize->formHeight /
  (1.0 * pOldFormSize->formHeight);
  pRatio->widthRatio = pNewFormSize->formWidth /
  (1.0 * pOldFormSize->formWidth);

  for(int i = 0; i < pForm->ControlCount; i++)
  {  
  TControl* pCtrl = pForm->Controls[i];
   
  //对单个控件进行缩放操作
  ControlSize * pCtrlSize = new ControlSize;
   
  /*保存控件的原始尺寸*/
  pCtrlSize->controlHeight = pCtrl->Height;
  pCtrlSize->controlWidth = pCtrl->Width;
  pCtrlSize->controlLeft = pCtrl->Left;
  pCtrlSize->controlTop = pCtrl->Top;
   
  /*按比例缩放控件*/
  pCtrl->Height = (floor)(pCtrlSize->controlHeight * pIn->heightRatio);
  pCtrl->Width = (floor)(pCtrlSize->controlWidth * pIn->widthRatio);
  pCtrl->Left = (floor)(pCtrlSize->controlLeft * pIn->widthRatio);
  pCtrl->Top = (floor)(pCtrlSize->controlTop * pIn->heightRatio);
   
  delete pCtrlSize;  
  /*对控件类型进行判断*/
  if(pCtrl->ClassType() == __classid(TGroupBox))
  {
  TGroupBox* pBox;
  for(int i = 0; i < pBox->ControlCount; i++)
  {
  TControl* pChild = pBox->Controls[i];
   
  pChild->Width = (floor)(pChild->Width * pIn->widthRatio);
  pChild->Height = (floor)(pChild->Height * pIn->heightRatio);
  pChild->Left = (floor)(pChild->Left * pIn->widthRatio);
  pChild->Top = (floor)(pChild->Top * pIn->heightRatio);
   
  /*对控件类型进行判断*/
  if(pChild->ClassType() == __classid(TPageControl))
  {
  for(int i = 0; i < pPage->ControlCount; i++)
  {
  TControl* pChild = pPage->Controls[i];
   
  pChild->Width = (floor)(pChild->Width * pIn->widthRatio);
  pChild->Height = (floor)(pChild->Height * pIn->heightRatio);
  pChild->Left = (floor)(pChild->Left * pIn->widthRatio);
  pChild->Top = (floor)(pChild->Top * pIn->heightRatio);
   
  }  
  }
  }  
  }
  //pNewFormSize->formFontSize = ResizeFormFont(pOldFormSize->formFontSize, pRatio);
  //pForm->Font->Size = pNewFormSize->formFontSize;

  /*保存现在窗体状态为原始状态*/
  pOldFormSize->formWidth = pNewFormSize->formWidth;