You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++Builder 11 中如何使用不进行缩放的固定尺寸窗体

Delphi窗体固定像素尺寸禁用缩放解决方案

问题根本原因

你遇到的现象是VCL窗体的默认处理逻辑导致的:

  • Scaled设为False时,VCL会跳过设计尺寸的DPI适配逻辑,直接套用系统默认的窗体基础尺寸,所以会丢失设计值
  • Scaled设为True时会按系统DPI比例缩放窗体,不符合固定像素的需求
  • DPI感知设置不生效,大概率是项目manifest配置被覆盖,或者IDE设置没有同步到编译产物中

实操解决方案

1. 项目配置调整

  • 打开项目选项,依次进入「应用程序」→「清单」选项卡
  • 直接关闭「启用DPI感知」开关,高版本Delphi选择DPI感知级别为无
  • 保存设置后清理项目编译缓存,重新生成可执行文件,避免旧manifest残留

2. 窗体属性配置

  • 窗体BorderStyle属性设置为bsSingle或bsDialog,禁止用户拖动边框修改尺寸
  • 移除窗体BorderIcons中的biMaximize选项,禁用最大化按钮
  • 保持Position属性为poScreenCenter,确保启动时居中显示

3. 代码兜底强制固定尺寸

在窗体的OnCreate事件中添加如下代码,直接锁定设计时的像素尺寸,绕过VCL的自动调整逻辑:

procedure TYourForm.FormCreate(Sender: TObject);
begin
  // 替换为你设计时的窗体实际宽高像素值
  Self.Width := 设计时宽度数值;
  Self.Height := 设计时高度数值;
end;

如果项目有多个窗体需要统一规则,可以将上述逻辑封装为公共窗体基类,所有需要固定尺寸的窗体直接继承即可。

内容的提问来源于stack exchange,提问作者vision

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:00