为什么我在2000系统编写的程序,拿到WIN98下运行,怎么窗体,字体显示的效果变了,请问怎样才能实现窗体和字体不变的效果呢?很急,在线 为什么我在2000系统编写的程序,拿到WIN98下运行,怎么窗体,字体显示的效果变了,请问怎样才能实现窗体和字体不变的效果呢?很急,在线等。谢谢!!!1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在设计程序的时候,看到Font属性了吗?手动设置一下,否则Delphi会让你的应用程序根据系统默认地走 win2000和win98的默认自体是不同的,窗体的大小等也不一致,需要特殊设置,这还是好的呢,可以修改设置。如果是套打,哭吧! 建议,作为一个规范和对用户友好的软件,应该让用户决定他喜欢的Windows系统字体和窗口字体。软件应该适应不同的用户设置。方便用户,把麻烦留给自己。 同意 SiTwo(闻之笑) 的说法 写给版主: 呵呵!老广,真巧,在这儿碰到你!你的问题我也遇见过,没有好的办法的,不过你在form窗体把font属性该成你想要的字体,其他的控件都不要该,我试过,有的行,有的不行,要不你碰以下运气吧! 将字体设为中文字体,然后将字符集设为chinese_gb2312就可以解决在2000系统编写的程序,拿到WIN98下运行,字体显示变形得问题。 begin Form1.Font.Name := '宋体'; Form1.Font.Size := 9; Form1.Font.Charset:= GB2312_CHARSET; Form1.Scaled := False;end; 同意GreatSuperYoyoNC(幽幽) : Form1.Font.Name := '宋体'; Form1.Font.Size := 9; Form1.Font.Charset:= GB2312_CHARSET; Form1.Scaled := False; 补充下 字体大小改变不一定是没设置好,我们中有部分人在写程序的时候,喜欢定死程序的界面的大小,多半是800*600。当这些程序运行在不同的分辨率下或者显示器下也可能发生字体大小的变化,不信你去试试给你下面的代码 自己加在程序的头文件钱const DefaultWidth = 800; DefaultHeight = 600;type TfrmJtBaseScale = class(TfrmJtBase) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; TMyControl = class(TControl);implementation{$R *.dfm}procedure TfrmJtBaseScale.FormCreate(Sender: TObject);var i: integer; a: real;begin if Screen.Width <> DefaultWidth then begin height:=longint(height)*longint(screen.height) div DefaultHeight; width:=longint(width)*longint(screen.width) div DefaultWidth; scaleby(screen.width , DefaultWidth); for i := 0 to self.ControlCount -1 do begin a := screen.Height / DefaultHeight * TMyControl(self.Controls[i]).Font.Size; TMyControl(self.Controls[i]).Font.Size := trunc(a); end; end;end;随分辨率改变 to:coolzlay(下面的话是我写的拉) 太麻烦 而且有时候这样会更乱 别人的一个帖子:1、窗口的字体用宋体9号,GB2312字符集2、窗口的Scaled设为False3、现在可以检查效果了 字库问题,所用的默认字符不同,你可以选择另外一个字符,在程序的setup过程中自动把这个字库也安装上去! 几个DELPHI的菜鸟问题! 在query里如何取得compute里的结果集 鼠标移动到文本框时,想捕获文本框的内容 关于DirectX输入问题的解决 请各位给点建议 关于Word文档中操作表格的问题(至今未解决)! FieldByName('Err').AsInteger为什么会把负数转换为正数? 三层数据库应用,错误提示:OLE服务无法绑定对象.<在线等待,马上给分!谢谢!> 高手谁能帮助我 delphi 的dbgrideh的过滤问题 我在TbaseC 广播了一条消息,为什么TConnBC_A,TConnBC_B 收不到? 一个ADOQuery的参数问题
软件应该适应不同的用户设置。
方便用户,把麻烦留给自己。
呵呵!老广,真巧,在这儿碰到你!你的问题我也遇见过,没有好的办法的,不过你在form窗体把font属性该成你想要的字体,其他的控件都不要该,我试过,有的行,有的不行,要不你碰以下运气吧!
Form1.Font.Name := '宋体';
Form1.Font.Size := 9;
Form1.Font.Charset:= GB2312_CHARSET;
Form1.Scaled := False;
end;
Form1.Font.Name := '宋体';
Form1.Font.Size := 9;
Form1.Font.Charset:= GB2312_CHARSET;
Form1.Scaled := False;
界面的大小,多半是800*600。当这些程序运行在不同的分辨率下或者显示器下也可能发生字体大小的变化,不信你去试试
给你下面的代码 自己加在程序的头文件钱const
DefaultWidth = 800;
DefaultHeight = 600;type
TfrmJtBaseScale = class(TfrmJtBase)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TMyControl = class(TControl);
implementation{$R *.dfm}procedure TfrmJtBaseScale.FormCreate(Sender: TObject);
var
i: integer;
a: real;
begin
if Screen.Width <> DefaultWidth then
begin
height:=longint(height)*longint(screen.height) div DefaultHeight;
width:=longint(width)*longint(screen.width) div DefaultWidth;
scaleby(screen.width , DefaultWidth);
for i := 0 to self.ControlCount -1 do
begin
a := screen.Height / DefaultHeight * TMyControl(self.Controls[i]).Font
.Size;
TMyControl(self.Controls[i]).Font.Size := trunc(a);
end;
end;
end;随分辨率改变
太麻烦 而且有时候这样会更乱
2、窗口的Scaled设为False
3、现在可以检查效果了