金桥科普  
设为首页 关于我们 邮箱登录
科普聚焦时代科技科普生活科学技术自然科学航空航天科技博览历史考古电脑IT
您现在的位置: 首页 >> 科普频道 >> 技巧实践 >> 文章详情
看实例学Delphi编程思路和技巧

胡勇智 中国电脑教育报 2002-02-18

    在编程爱好者中流传着这样一句话:“业余的程序员用VB,真正的程序员用VC,聪明的程序员用Delphi”。这当然不尽贴切,但从中不难体会到Delphi作为Windows下的主要编程工具之一,其功能完善、灵活多变且易学易用的特点。

    下面,我们就通过四则具体的实例来学习Delphi编程的一般思路和技巧。

    将程序加入启动

    Windows自启动的信息存放于注册表HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun中,Delphi为程序员提供了专用于注册表操作的类型TRegistry:首先利用它声明一个变量,变量的RootKey属性表明当前是对哪一个根键进行操作;使用变量的OpenKey方法打开子键,使用ReadString方法读子键内容,使用WriteString方法写入子键内容。可以自定义一个过程AutoRun来实现此功能,格式为:AutoRun(任意名称,要自动运行的程序名)。实例如下:

implementation

uses Registry; //声明注册表单元

procedure AutoRun(sCaption,sExeName:string); //sCaption为项目名称,sExeName为程序名

var

RegF:Tregistry; //定义变量RegF

begin

RegF:=Tregistry.Create; //创建变量

RegF.RootKey:=HKEY_LOCAL_MACHINE; //指定要操作的根键

if RegF.Openkey('SoftwareMicrosoft

WindowsCurrentVersionRun',true) then

RegF.WriteString(sCaption,sExeName);

RegF.Free; //释放变量

end;

procedure TForm1.Button1Click(Sender:

TObject);

begin

AutoRun('MyAutoRun',Paramstr(0)); 

//调用过程,Paramstr(0)函数返回带路径的程序名

end;

    实现文件拷贝

    在本例中,我们使用数据压缩的API函数LZCopy来实现一个文件拷贝的过程,其调用格式为:CopyFile(源文件名,目标文件名)。

implementation

uses LZExpand;

procedure CopyFile(sFileName,dFileName:String);

var sFile,dFile:file;

begin

AssignFile(sFile,sFileName);

Reset(sFile);

AssignFile(dFile,dFileName);

Rewrite(dFile);

LZCopy(TFileRec(sFile).Handle,TFileRec

(dFile).Handle);

CloseFile(sFile);

CloseFile(dFile);

end;

    避免多次打开同一程序

    Windows是一个多任务的操作系统,允许用户同时打开多个实例,但这样做有可能会造成不良后果。例如:自己设计屏幕保护程序时,只要屏保程序已经被打开运行,就不能再运行其第二个实例;如果不加以限制,则可能出现每隔一定时间就运行一个屏保程序的不正常情况。

    要使系统只能打开程序的一个实例,需要对工程文件(*.dpr)进行少许改动,使用API函数FindWindow,其格式为:FindWindow(窗体类名,窗体标题),返回一个窗体的句柄或零(如果没有找到窗体)。假设程序主窗体的标题为MainForm,则工程文件的具体代码如下:

program Project1;

uses Forms,Windows, Unit1 in 'Unit1.pas' {Form1};

var Hwnd:THandle;

begin

Hwnd:=FindWindow('TForm1','MainForm'); //查找是否已有窗体MainForm

if Hwnd<>0 then begin

SetForegroundWindow(Hwnd); //激活已运行的程序实例,但程序最小化时无效

Application.Terminate; //终止本次实例

end

else begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

//运行本次实例

end;

end.

    限制窗体的大小

    当编程者为窗体选择可变化的边框时,用户可以按自己的意愿拖动边框,改变窗体大小。Delphi为窗体和所有控件提供了一个特殊的属性:Constraints。只需为Constraints属性的子属性设置合适的最大值与最小值,就能建立一个大小不超过指定限制的窗体或控件。我们可以将这些语句放在窗体创建事件中(FormCreate):

procedure TForm1.FormCreate(Sender: TObject);

begin

form1.Height:=200;

form1.Width:=300; 

form1.Constraints.MaxHeight:=400; 

form1.Constraints.MaxWidth:=600; 

form1.Constraints.MinHeight:=100; 

form1.Constraints.MinWidth:=150; 

end;
  发表评论 写信给编辑 关闭窗口
同栏目内容
· 让你的电脑启动画面绚起来 2007-09-12
· 小技巧帮大忙 极点五笔 2007-09-05
· 如何提高迅雷的下载速度? 2007-09-03
· Vista小技巧 消除红眼 2007-09-03
· 千千静听实用小功能 2007-08-29
· 四大妙招帮你成功的隐藏文件 2007-08-20
相关内容
近期主推
西藏发现青藏高原最大冰川群
·西藏发现青藏高原最大冰川群
·中日: "月亮女神"携手"嫦娥"
·行星大碰撞砸死恐龙催生人类
·美研制会飞汽车定价9万美元
·美国教授设计出自适应机器人
·银河系可能有20多个黑洞
近期热门
英海域惊现大龙虾为普通龙虾5倍
·英海域惊现大龙虾为普通龙虾5倍
·新物种金蛙体表有剧毒
·我国嫦娥工程计划测量月球
·精神病药物可治多种癌症
·视觉震撼:来自海底的精灵
·能删除不良记忆的药物诞生
近期焦点
广西发现罕见溶洞钟乳石有30万年
·广西发现罕见溶洞钟乳石有30万年
·澳大利亚惊现“卡布基诺”海滩
·美国"彩色"瀑布夜幕下震撼游人
·地球上究竟有多少个物种
·英国探险家北极游泳破纪录
·世界之最 世上最小的动物
金桥科普是一个公益性栏目,内容由作者提供或摘自互联网,其目的是向广大网民普及科学技术知识。如果您发现本网站转载或摘编了您拥有著作权的作品,请通知我们(电话:023-63659911),我们立即删除。
关于我们 | 网站地图 | 用户注册 | 广告客户 | 招聘信息 | 业务信息
Copyright@2006-2009 JQInfo.com,WONDER. All Rights Reserved
重庆科技咨询中心.重庆网得信息技术有限公司.版权所有
Email:webmaster@jqinfo.com
重庆数据通信局提供网络带宽. 渝ICP备05002327号