首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder 維持控制項位置與大小隨視窗縮放

     編輯:關於C++

三種層次的版面自適應技巧

一、利用 OnResize 事件調整單一控制項

於表單 OnResize 計算置中座標:

void __fastcall TForm1::FormResize(TObject *Sender)
{
    int mid = Width / 2;
    Label1->Left = mid - Label1->Width / 2;
    Button1->Left = mid - Button1->Width / 2;
}

二、遍歷 Controls 陣列批次調整

適用於所有控制項同樣邏輯 (如全置中):

void __fastcall TForm1::FormResize(TObject *Sender)
{
    int mid = Width / 2;
    for (int i = 0; i < ControlCount; i++) {
        TControl *c = Controls[i];
        c->Left = mid - c->Width / 2;
    }
}

三、容器控制項 (Panel/GroupBox) 分組管理

容器本身隨表單調整,內部子控制項再隨容器調整:

void __fastcall TForm1::FormResize(TObject *Sender)
{
    int mid = Width / 2;
    for (int i = 0; i < ControlCount; i++) {
        TControl *c = Controls[i];
        c->Left = mid - c->Width / 2; // 容器置中

        if (c == GroupBox1) { // 針對 GroupBox 內部子控制項
            int subMid = GroupBox1->Width / 2;
            for (int j = 0; j < GroupBox1->ControlCount; j++) {
                TControl *sub = GroupBox1->Controls[j];
                sub->Left = subMid - sub->Width / 2;
            }
        }
    }
}

四、多解析度支援:取得螢幕尺寸

HDC hdc = GetDC(NULL);
int scrW = GetDeviceCaps(hdc, HORZRES);
int scrH = GetDeviceCaps(hdc, VERTRES);
ReleaseDC(NULL, hdc);
// 依 scrW/scrH 比例縮放表單與控制項

同樣原理可用於列印 (GetDeviceCaps(hdc, PHYSICALWIDTH) 等)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved