您的位置:首页 > 编程语言 > Delphi

定制Delphi的新建文件模板与新窗体的默认字体

2009-07-08 20:05 351 查看
定制Delphi的新建文件模板与新窗体的默认字体
by eGust

有时候,我会建一个Console项目用来测试一段简单的代码,在Delphi 7中会自动生成如下的代码:
program Project*;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
{ TODO -oUser -cConsole Main : Insert code here }
end.

为避免在ide中运行完就直接退出而看不到输出结果,每次都要在末尾加一句Readln,有时候还常常重复写一些其它的代码。用多了的话也总觉得麻烦,无形中浪费了不少时间。所以一直以来有个想法,能不能改动Delphi的新建文件模板,把自己的常用代码塞进去——毕竟删代码的速度比敲代码快多了。今天花了些功夫,终于搞定了它。

在动手之前,先来准备一个能修改PE文件中的资源文件的工具,我用的是MS VisualStudio。首先打开D7(这里用Delphi7举例)安装目录下的Bin目录,里面的delphide70.bpl就是我们要开刀的文件了。为防不测,还是先备份它一下为妙。
首先把delphide70.bpl的扩展名.bpl改为.dll,然后丢到VS里,接下来找到RCDATA并双击其中的PASCRTRS。全选里面的内容复制出来,就会看到一些比较熟悉的Delphi代码:
unit %s;

interface

implementation

end.
|
|unit %s;

interface

uses
SysUtils, Classes;

type
%s = class(%s)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('%s', [%1:s]);
end;

end.
...
熟悉Delphi的人一眼就能看出来,第一段显然是空Unit文件,第二段是New Component用的等等。里面的%s明显是给Format用的,都是些新建时才能决定的名称;而“|”大概是用来分隔不同单元文件之类的东西,不用管它们。
现在举例修改Console模板,首先找到Console模板的位置,把相关部分改成:
|program %s;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
try
{ TODO -oUser -cConsole Main : Insert code here }
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
Readln;
end.

需要注意的是,如果模板里需要出现“%”字符的话,一定要写成“%%”,因为模板中的字符串是Format的第一个参数,不转义的话就挂了。接着,用新模板替换掉原来的PASCRTRS,保存之后,再把修改好的文件名改回delphide70.bpl,最后覆盖掉d7的bin目录中的文件(如果开着d7的话要先关掉)。这时,我们的替换工作就完成了。打开d7新建一个Console项目,就会发现现在自动生成的代码已经变成上面的样子了。

在PASCRTRS里,除了前面说的空Unit、Component外,还有DLL Project之类的许多模板。比如做DLL项目的时候,常常需要弄一个类似 DllMain(dwReason) 的东西出来,直接定制bpl资源中的模板文件就方便多了。
btw,对于BDS 2009来说,这个 PASCRTRS 模板在 delphicoreide120.bpl 中。

最后再顺便介绍一下改变d7新建窗体的默认字体的方法。
DelphiDistiller提供了一个功能,可以把d7的新建窗体的默认字体替换成Tahoma。它的原理是替换 {D7安装目录}/Bin/vcl70.bpl 中用于表示该字体名的ShortString。这种字符串的格式是:在字符串正文开始之前的1字节用来说明字符串长度,然后在它后面紧跟着整个字符串,这个字符串不需要包括C语言形式的字符串结尾(C中的'/0'或Delphi中的#0)。从vcl70.bpl中相应位置后面跟着0的数量来看,这里塞个20多字节的字体名应该是没啥问题的。
如果既不习惯Borland默认的MS Sans Serif,也不喜欢DelphiDistiller唯一能改成的Tahoma字体的话,那就自己动手改吧:
1 首先找个可以16进制编辑的编辑器(如WinHex、UltraEdit等),打开vcl70.bpl搜当前的默认字体名(如D7默认的“MS Sans Serif”);
2 找到之后,在相应位置填入你喜欢的字体名,如果不够覆盖掉原来的,后面清不清0其实无所谓(但为了美观还是清吧);
2.5 如果你说要改的字体名超过30字节的话,我……无语了 = =;
3 最后别忘了,要把字符串前面那个用来说明字符串长度的字节,改成新字体名的长度(别说不会数数……)。

保存之后,打开D7再来看看效果吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: