Board logo

Subject: 我的 Delphi 编程界面统一(一) [Print This Page]

Author: skyjacker    Time: 2007-8-7 17:06     Subject: 我的 Delphi 编程界面统一(一)

    (1)、字体:宋体,10磅,字符集GB2312
       2)、常用控件大小以及控件间距定义,效果图演示如下:


Image Attachment: 标准界面1.JPG (2007-8-7 17:06, 33.13 K) / Download count 495
http://bbs.cnpack.org/attachment.php?aid=343


Author: skyjacker    Time: 2007-8-7 17:07

效果图介绍如下:
【1】、TGroupBox 距窗体左边8,距顶8
【2】、TEdit输入框大小:高21,宽121
【3】、TGroupBox 中的控件默认距左 8
【4】、TGroupBox 内部的按钮,比如“内部按钮”,宽75,高23
【5】、TGroupBox 外部的按钮,比如“关闭”,宽75,高21
【6】、如果TEdit,TButton 控件宽度不够,可以适当加宽,
但是高度应一致。
【7】、同种类型的控件之间垂直间距为4,水平间距为8
Author: Passion    Time: 2007-8-7 17:09

TButton的高度一般21,这是Windows一般对话框的标准。
Author: shenloqi    Time: 2007-8-8 09:44

我痛恨宋体10号(我觉得9号比10号好看很多了),因为这时候看上去很丑,而且设置宋体为宋体在Win98下显示上会有问题。
Author: shenloqi    Time: 2007-8-8 10:00

以前写的,不完全小结

不同DPI下窗体的自适应的有关注意点



l          在设计窗体的时候需要考虑是否允许程序在不同DPI自适应窗体,不自适应的优点是在不同的DPI下看到的结果基本是一样的,缺点是可能在不同的DPI下看起来太小或者太大。

l          如果不想自适应窗体,则设置窗体的Scaled为False

l          如果需要自适应窗体,则设置窗体的Scaled为True(Delphi的窗体默认是允许Scaled的)

l          将AutoScroll属性设置为False并保存窗体,AutoScroll为True表示不在运行期改变窗体的大小,这样当窗体的字体和组件进行缩放时看起来就会很糟糕。(在Delphi 7下,如果窗体可以调整大小,则AutoScroll会自动设定为True,而我们大部分的程序都是可以改变窗体大小的,Delphi默认的窗体也是可以改变窗体大小的,所以很多时候窗体就被不小心设置为Scaled和AutoScroll都是True了)

l          将窗体的自己设置为可以自适应的TrueType字体,如Arial,Tahoma等;MS San Serif不是TrueType的,虽然大部分情况下看起来还行。(Delphi 2006调整了窗体的默认字体为Tahoma,可是之前版本的Delphi的窗体的默认字体都是MS San Serif,这个字体也是在Windows 2000等系统下看起来正常的中文字体到了Win98下却很小很丑的元凶)

l          如果使用的字体在运行的操作系统中没有,则Windows会自动在缺失字体的同一体系中选择一种替换字体,不过替换字体的大小与原来设定的字体很可能不同,这样也可能会导致问题。(可以通过向%WinDir%\Fonts添加字体,也可以通过系统消息向系统注册字体)

l          将窗体的Position属性设置为除poDesigned之外的值(Delphi 2006中的poDefaultPosOnly也不可以),因为如果设计的时候窗体被拉到Left为650的地方,那么窗体在640*480的分辨率下就会看不到了。

l          不要将窗体上的各个控件挤在一起,起码要给各个控件之间留4个像素的位置,这样当Border属性等导致控件变化的时候不会导致控件重叠在一起。

l          给单行的Align属性不是alCenter的Label设置AutoSize为True。(多行的Label不要设置AutoSize为True)

l          给Label/CheckBox等等控件足够的空白范围以便当字体宽度变化时变化。预留当前长度的25%是比较好的(如果要进行多语翻译则需要更多留白,至少30%)。如果Label的AutoSize为False,则要Label的Width就要足够大。对于多行的Label,在Label的底部起码多留一行的空间。

l          不要在不同的DPI下在IDE中打开并保存窗体(和包含窗体的代码文件)。(对于SCM,推荐使用小字体-96DPI,Windows经典主题)

l          无论是在运行期还是在设计期都不要多次ReScale窗体,因为每次Scale都会带来浮点精度的舍去;也不要修改一个窗体的PixelsPerInch属性(IDE会阻止该属性的修改,但是却不能阻止手工修改),此外也不要直接修改dfm中的窗体大小等等信息,TextHeight属性也不能修改。

l          设计窗体的时候要考虑窗体的大小不要超过程序能运行的最小分辨率。

l          设计窗体时,要合理设置控件的Anchors/Align等属性。

l          此外如TComboBox/TDBLookupCombo等等组件也需要尽量给足宽度,否则可能会看不到完整的信息。

l          在程序中不要使用固定的控件位置和大小,因为这些都可能在运行时变化。(如Button.Top := 50等)

l          设置了AutoResize的TImage的图片不会自动放大或缩小,所以不可以采用利用设计期的图片的大小来只显示部分图像的方法。

l          如果窗体可以记忆上一次运行的大小、位置、WindowsState等,在Load的时候需要注意要确保窗体在屏幕上可见,以及不要调整不能调整大小的窗体的大小。

l          TFrame是为了在设计期复用窗体而引入的,如果要将运行期的窗体嵌入到别的窗体,则需要使用TForm。(DBStudio就不恰当的使用了TFrame)

l          在多语程序中可能会涉及到字体的修改,这时也应该考虑多DPI设定的情况。

l          如果一个电脑在多DPI间切换,则注册表保存的窗体大小和位置等信息也需要被小心处理。
Author: Passion    Time: 2007-8-8 16:10

对,我们CW的初始字体也一直用的是宋体9的。
Author: xjw100    Time: 2007-8-8 16:17

呵呵,用宋体我也是9号,更多时候我是用Tahoma 8 号,Button高度21
Author: zzzl    Time: 2007-8-9 09:15

全部都用默认的
Author: skyjacker    Time: 2007-8-14 12:50

显示器在变大,字体一直不变,看起来也不是很明了。

有些显示的地方,会加上用户可调整字体大小的功能。
有不少用户抱怨字体太小,看不清除。
毕竟用户看得舒服,看得清楚才是最重要的。
Author: shenloqi    Time: 2007-8-15 10:12

如果要用户看的舒服,就要允许用户自定义字体,但是操作系统采用的字体是怎样的就应该是怎样的,这样如果用户可以适应操作系统就能适应你的程序,不过程序最好要支持大字体,这样就跟操作系统的字体一致了。
Author: xwing    Time: 2007-10-22 19:50

我喜欢微软雅黑的显示效果.
Author: abcdman    Time: 2008-3-21 14:09

宋体9号是个不错的选择




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0