多分辨率delphi应用程序提示

在Delphi中设计表单时,编写代码使应用程序(表单和所有对象)看起来基本相同,而不管屏幕分辨率是什么,这通常很有用。...

在Delphi中设计表单时,编写代码使应用程序(表单和所有对象)看起来基本相同,而不管屏幕分辨率是什么,这通常很有用。

Rear view of computer programmers using laptop at office desk

在表单设计阶段的早期,您要记住的第一件事是您是否允许缩放表单。不缩放的优点是在运行时不会发生任何更改。不缩放的缺点是在运行时不会发生任何更改(如果表单未缩放,则表单可能太小或太大,无法在某些系统上读取)。

如果不打算缩放表单,请将“缩放”设置为False。否则,将属性设置为True。另外,将AutoScroll设置为False:相反的意思是在运行时不更改窗体的帧大小,当窗体的内容确实更改了大小时,这看起来不太好。

重要考虑

将表单的字体设置为可缩放的TrueType字体,如Arial。只有Arial才能提供所需高度像素范围内的字体。​ 如果应用程序中使用的字体未安装在目标计算机上,则Windows将在同一字体系列中选择一种替代字体来替代。

将表单的Position属性设置为poDesigned以外的其他属性,这将使表单保留在设计时留下的位置。这通常会在1280x1024屏幕的左侧结束,并完全脱离640x480屏幕。

不要拥挤窗体上的控件在控件之间保留至少4个像素,以便边框位置的一个像素更改(由于缩放)不会显示为重叠控件。

对于对齐或对齐的单行标签,请将“自动调整大小”设置为True。否则,将AutoSize设置为False。

确保标签组件中有足够的空白以允许更改字体宽度-占当前字符串显示长度25%的空白有点太多,但安全。如果您打算将应用程序翻译成其他语言,则字符串标签至少需要30%的扩展空间。如果“自动调整大小”为False,请确保实际设置了适当的标签宽度。如果AutoSize为True,请确保标签有足够的空间自行增长。

在多行文字包装标签中,在底部至少留一行空白。当字体宽度随缩放而改变时,如果文本换行方式不同,则需要使用此选项来捕获溢出。不要以为因为你使用的是大字体,你就不必允许文本溢出——别人的大字体可能比你的大!

在IDE中以不同分辨率打开项目时要小心。表单的PixelsPerInch属性将在表单打开后立即修改,如果保存项目,该属性将保存到DFM。最好通过独立运行应用程序来测试应用程序,并仅以一种分辨率编辑表单。以不同的分辨率和字体大小进行编辑会引起组件漂移和大小调整问题。请确保将所有窗体的PixelsPerInch设置为120。它默认为96,这会导致分辨率较低时出现缩放问题。

说到组件漂移,不要在设计时或运行时多次重新缩放窗体。每次重新缩放都会引入舍入误差,由于坐标是严格积分的,因此舍入误差积累得非常快。随着每次连续重缩放,分数量从控件的原点和大小截断,控件似乎会向西北移动并变小。如果要允许用户多次重新缩放表单,请在每次缩放之前从新加载/创建的表单开始,以避免缩放错误累积。

一般来说,没有必要以任何特定的分辨率设计表单,但在发布应用程序之前,务必以640x480大小字体和高分辨率大小字体查看表单的外观。这应该是定期系统兼容性测试检查表的一部分。

请密切关注任何本质上是单行TMemos的组件,例如TDBLookupCombo。Windows多行编辑控件始终仅显示整行文本。如果控件对于其字体来说太短,则TMemo将完全不显示任何内容(TEdit将显示剪裁的文本)。对于这样的组件,最好使它们过大几个像素,而不是过小一个像素,并且根本不显示任何文本。

请记住,所有缩放都与运行时和设计时之间字体高度的差异成比例,而不是像素分辨率或屏幕大小。还请记住,当窗体被缩放时,控件的原点将发生更改。如果不将组件稍微移动一点,则无法很好地使组件变大。

定位、对齐和约束:第三方vcl

一旦您知道在不同屏幕分辨率上缩放Delphi表单时要记住哪些问题,就可以开始编写代码了。

在使用Delphi版本4或更高版本时,设计了几个属性来帮助我们维护窗体上控件的外观和布局。

使用“对齐”将控件与窗体或面板的顶部、左下角或右侧对齐,即使包含控件的窗体、面板或组件的大小发生更改,控件仍保持在该位置。调整父控件的大小时,对齐控件也会调整大小,使其继续跨越父控件的上边缘、下边缘、左边缘或右边缘。

使用约束指定控件的最小和最大宽度和高度。当约束包含最大值或最小值时,无法调整控件的大小以违反这些约束。

使用定位可确保控件相对于其父控件的边保持其当前位置,即使父控件已调整大小。调整其父控件的大小时,控件将保持其相对于其定位到的边的位置。如果控件定位到其父控件的相对边,则当调整其父控件的大小时,该控件将拉伸。

procedure ScaleForm (F: TForm; ScreenWidth, ScreenHeight: LongInt) ;begin F.Scaled := True; F.AutoScroll := False; F.Position := poScreenCenter; F.Font.Name := 'Arial'; if (Screen.Width <> ScreenWidth) then begin F.Height := LongInt(F.Height) * LongInt(Screen.Height) div ScreenHeight; F.Width := LongInt(F.Width) * LongInt(Screen.Width) div ScreenWidth; F.ScaleBy(Screen.Width,ScreenWidth) ; end;end;

  • 发表于 2021-09-25 06:41
  • 阅读 ( 164 )
  • 分类:编程

你可能感兴趣的文章

如何将媒体文件嵌入delphi可执行文件(rc/.res)(embed media files into a delphi executable (rc/.res))

使用声音和动画等多媒体文件的游戏和其他类型的应用程序必须随应用程序一起分发额外的多媒体文件,或者将文件嵌入可执行文件中。 您可以将原始数据作为资源添加到应用程序中,而不是分发单独的文件供应用程序使用...

  • 发布于 2021-09-06 15:08
  • 阅读 ( 189 )

delphi编译器版本指令

...NUX MSWINDOWS-表示操作环境为MS Windows/li] CONSOLE—表示正在将应用程序编译为CONSOLE应用程序 通过了解上述符号,就可以通过使用编译器指令为每个版本编译适当的源代码来编写与多个版本的Delphi协同工作的代码。 注:例如,符...

  • 发布于 2021-09-06 15:09
  • 阅读 ( 161 )

了解delphi编程的基础知识

...Turbo)Pascal到Delphi 2005的演变,例如Delphi演变为一个快速应用程序部署框架,旨在为在线和移动交付提供高性能、可扩展的应用程序。 之后,探索Delphi实际上是什么,以及如何安装和配置其开发环境。在此基础上,探索DelphiIDE...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 180 )

理解delphi项目和单元源文件

简而言之,Delphi项目只是组成由Delphi创建的应用程序的文件集合。DPR是用于Delphi项目文件格式的文件扩展名,用于存储与项目相关的所有文件。这包括其他Delphi文件类型,如表单文件(DFM)和单元源文件(.PASs)。 由于Delphi...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 171 )

程序退出时delphi中的内存泄漏通知

...更丰富。 “新”内存管理器最出色的功能之一是允许应用程序注册(和注销)预期内存泄漏,并在程序关闭时报告意外内存泄漏。 使用Delphi创建WIN32应用程序时,必须确保释放动态创建的所有对象(内存)。 当程序无法释...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 165 )

德尔福单元剖析(德尔福初学者版)

...占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一个应用程序或表单模板开始。项目由创建目标应用程序所需的所有文件组成。 选择“查看项目管理器”...

  • 发布于 2021-09-10 20:53
  • 阅读 ( 180 )

如何delphidbgrid中的multiselect(multiselect in the delphi dbgrid)

Delphi的DBGrid是数据库相关应用程序中使用最广泛的DB感知组件之一。它的主要目的是使应用程序的用户能够在表格网格中操作数据集中的记录。 DBGrid组件的一个鲜为人知的特性是,可以将其设置为允许多行选择。这意味着用...

  • 发布于 2021-09-10 22:29
  • 阅读 ( 187 )

在系统托盘中放置delphi应用程序

...其他图标吗?这个地方叫做Windows系统托盘。您想将Delphi应用程序的图标放在那里吗?您希望该图标设置动画还是反映应用程序的状态? 这对于长时间运行而没有用户交互的程序(通常整天都在电脑上运行的后台任务)非常有...

  • 发布于 2021-09-11 00:20
  • 阅读 ( 177 )

用delphi和ado编辑excel表格

...何修改Excel工作表:编辑、添加和删除行。 将数据从Delphi应用程序传输到Excel。如何创建工作表并使用MS Access数据库中的自定义数据填充工作表。 如何连接到microsoft excel Microsoft Excel是一个功能强大的电子表格计算器和数据分...

  • 发布于 2021-09-11 00:21
  • 阅读 ( 238 )

逆向工程(反编译)delphi应用程序

阅读全文,了解如何反编译Delphi应用程序。 相关的: 在Delphi程序的EXE中嵌入资源 动态链接库(DLL)和Delphi 免费源代码Delphi项目

  • 发布于 2021-09-11 18:00
  • 阅读 ( 175 )
唯一慕修
唯一慕修

0 篇文章

相关推荐