delphi 程序窗体及控件自适应分辨率(通过ComponentCount遍历改变字体大小以及上下左右)
unit untFixForm; interface uses
Classes, SysUtils, Controls, Forms; type
TFontedControl = class(TControl)
public
property Font;
end; TFontMapping = record
SWidth:Integer;
SHeight:Integer;
FName:string;
FSize:Integer;
end; procedure FixForm(AForm:TForm);
procedure SetFontMapping; var
FontMapping:array of TFontMapping; implementation procedure SetFontMapping;
begin
SetLength(FontMapping, ); // 800 x 600
FontMapping[].SWidth := ;
FontMapping[].SHeight := ;
FontMapping[].FName := '宋体';
FontMapping[].FSize := ; // 1024 x 768
FontMapping[].SWidth := ;
FontMapping[].SHeight := ;
FontMapping[].FName := '宋体';
FontMapping[].FSize := ; // 1280 x 1024
FontMapping[].SWidth := ;
FontMapping[].SHeight := ;
FontMapping[].FName := '宋体';
FontMapping[].FSize := ; end; procedure FixForm(AForm:TForm);
var
i, j:integer;
t:TControl;
begin
with AForm do
begin
for i := to ComponentCount - do
begin
try
t := TControl(Components[i]);
t.left := Trunc(t.left * (Screen.width / ));
t.top := Trunc(t.Top * (Screen.Height / ));
t.Width := Trunc(t.Width * (Screen.Width / ));
t.Height := Trunc(t.Height * (Screen.Height / ));
except
end; { try }
end; { for i } for i := to Length(FontMapping) - do
begin
if (Screen.Width = FontMapping[i].SWidth) and (Screen.Height =
FontMapping[i].SHeight) then
begin
for j := to ComponentCount - do
begin
try
TFontedControl(Components[j]).Font.Name := FontMapping[i].FName;
TFontedControl(Components[j]).FONT.Size := FontMapping[i].FSize;
except
end; { try }
end; { for j }
end; { if }
end; { for i }
end; { with }
end; initialization
SetFontMapping; end.
SetFontMapping 方法可以自行修改,以适应更多的分辨率。
调用也非常简单,如下所示:
procedure TForm1.FormShow(Sender:TObject);
begin
if MessageBox(Handle, '要使用屏幕自适应吗?', '提示', MB_YESNO or
MB_ICONINFORMATION) = idno then Exit;
untFixForm.FixForm(Self);
end;
http://blog.csdn.net/han_348154920/article/details/4762928
delphi 程序窗体及控件自适应分辨率(通过ComponentCount遍历改变字体大小以及上下左右)的更多相关文章
- C# WinForm窗体及其控件自适应各种屏幕分辨率
C# WinForm窗体及其控件自适应各种屏幕分辨率 一.说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置 ...
- C# ——窗体和控件随着分辨率的变化自适应大小
一.说明 我们自己编写程序的界面,会遇到各种屏幕分辨 率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比 ...
- C# Winform窗体和控件自适应大小
1.在项目中创建类AutoSizeForm AutoSizeForm.cs文件代码: using System; using System.Collections.Generic; using Sys ...
- Qt窗体内控件自适应调整大小
http://stackoverflow.com/questions/3492739/auto-expanding-layout-with-qt-designer After creating you ...
- WinForm窗体及其控件的自适应
3步骤: 1.在需要自适应的Form中实例化全局变量 AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...
- 转:C# WinForm窗体及其控件的自适应
一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率> ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...
- Winfon 页签切换及窗体控件自适应
由于公司的业务调整,最近不仅开发bs,还有不熟悉的cs,人手也不足,项目还多,对于cs来说,算是小白,虽然是一个人,也是硬着头皮写,拖拽控件,自定义控件.一个项目下来,对cs有了很深的认识,这里好好感 ...
- C# WinForm窗体及其控件的自适应
3步骤: 1.在需要自适应的Form中实例化全局变量 AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...
- 【Winfrom-适配窗体】 WinForm窗体及其控件的自适应,控件随着窗体变化
在Winform中,窗体最大化之后,控件仍然保持原来的大小,就会显得不好看,那么有什么办法让控件跟着窗体变化吗? 在需要自适应的Form中代码如下:(AutoSizeFormClass.cs源码在下方 ...
随机推荐
- C#中枚举类型和int类型的转化
先定义一个枚举类型 , 初中, 高中,大学 }; int ->enum int d=2; PropertyType a=(PropertyType)d; int <- enum Prop ...
- Ubuntu runlevel修改
安装Unbuntu 12.04. 据说Ubunut的一个UI相对友好的Linux版本,但我的需求是仅仅将其作为服务器使用,偶尔用用UI界面.所以我希望启动Ubuntu时,直接进入Shell命令行. 印 ...
- pip使用国内镜像/源的方法
一.修改配置文件 pip配置文件的路径如下,没有的话新建一个: linux/msys2等是:用户目录/.pip/pip.confwindows是:用户目录/pip/pip.ini 用户目录通过下行命令 ...
- 站内信DB设计实现
两年前,万仓一黍在博客园发了两篇关于站内信的设计实现博文,<群发"站内信"的实现>.<群发"站内信"的实现(续)>,其中阐述了他关于站内 ...
- Android 6.0 反射 newInstance
Android 6.0 从预览版发布到现在已经快一年的时间了,然而市场占有率还是低的可怜,国内更不用说.随着三星.华为.小米开始升级至6.0 ,以及上半年各厂商新机逐渐发布,6.0的市场占有率必将迎来 ...
- SKTexture类
继承自 NSObject 符合 NSCodingNSCopyingNSObject(NSObject) 框架 /System/Library/Frameworks/SpriteKit.framewo ...
- 第一章 工欲善其事 必先利其器—Android SDK工具(3)
1.3没有真机一样开发--Android模拟器 有些时候,我们手头上可能并没有符合要求的Android设备.那么这时候我们是不是对调试或者开发就一筹莫展了呢?当然不是.由于我们有Android模拟器. ...
- WPS2012交叉引用技巧,word比wps这点强更新參考文献
WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...
- [Angular 2] Using Two Reducers Together
Add another reducer: export const SECOND = "SECOND"; export const HOUR = "HOUR"; ...
- OpenStack对象存储——Swift
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理 和实践等几方面讲述S ...