说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi编程技巧十则

HTML文档下载 WORD文档下载 PDF文档下载
Delphi编程技巧十则

Delphi作为一门新起的Windows编程语言,由于其集众多的优秀特性于一身,因而越来越得到广大编程人员和发烧友的青睐。以下十则技巧涉及的面比较广泛,希望能够对Delphi的爱好者有所裨益。

1.类似于vb.中的doevents功能。

大家或许发现,在Delphi中没有类似于vb.中的doevents 函数,这样有的时候,我们将无法使Windows响应多个同时发生的事件。其实,在Delphi的application对象中包括类似的一个方法:ProcessMessage,你可以通过调

用Application.ProcessMessage来完成象vb.中的doevents一样的功能。

2.在Delphi中调用NetscapeNavigator。

随着Internet的火爆,有没有想过在你的Delphi程序中启动Netscape浏览器,显示出你指定的WWW地址的主页。下面这个程序能够完成这一功能。

programNetscape;

usesDDEMan;

procedureGotoURL(sURL:string);

var

dde:TDDEClientConv;

begin

dde:TDDEClientConv.Create(nil);

withddedo

begin

//specifythelocationofnetscape.exe

ServiceApplication:′c:ιns32ιprogramιnetscape.exe′;

//activatetheNetscapeNavigator

SetLink(′Netscape′,′WWW—Activate′);

RequestData(′0xFFFFFFFF′);

//gotothespecifiedURL

SetLink(′Netscape′,′WWW—OpenURL′);

RequestData(sURL+′,,0xFFFFFFFF,0x3,,,′);

CloseLink;

end;

dde.Free;

end;

begin

GotoURL(′http://www.yahoo.com/′);

end.

3.格式化整数输出。

比较大的数字在输出时会显得不易阅读,在Delphi中显示带分节号的数字是相当简单的一件事,如下即可:xxxxx.caption:ΚFormatFloat(′#′,524667500)。

4.在编译时获得提示。

在Delphi2.0中,编译时,可以让编译器告诉你一些提示,比如哪些变量声明了,却从来没有使用过。我们知道,可以通过菜单中的选项来控制是否要Delphi这样做,但如果由于一些特殊需要,你只要在指定的代码段需要Delphi这样的提示,怎么办呢?请参考如下的程序。

{$HINTON}

procedureTform1.Button1Click(Sender:TObject);

var

X:integer;

begin

end;

Reg.WriteString(′desktop′!洌?′);

Reg.Free;

SystemParametersInfo(SPI—SETDESKWALLPAPER,0

,nil,SPIF—SENDWININICHANGE);

end;

6.获得最后使用文件的日期。

在Win95中有一项新的功能,就是可以获得访问文件的最后日期。著名的CleanSweapforWin95软件中就是靠这一功能来作为判断某个文件是否被经常访问的依据之一。

在Delphi中,我们可以通过下面的程序来达到此功能。

functionGetFileLastAccessTime(sFileName:string)

:TDateTime;

var

ffd:TWin32FindData;

dft:DWord;

lft:TFileTime;

h:THandle;

begin

//getfileinformation

h:ΚWindows.FindFirstFile(PChar(sFileName),ffd);

if(INVALID—HANDLE—VALUEΙΛh)then

begin

//we′relookingforjustonefile,socloseour″f

ind″

Windows.FindClose(h);

//converttheFILETIMEtolocalFILETIME

FileTimeToLocalFileTime(ffd.ftLastAccessTime,lft);

//convertFILETIMEtoDOStime

FileTimeToDosDateTime(lft,LongRec(dft).Hi

,LongRec(dft).Lo);

//finally,convertDOStimetoTDateTimeforusein

Delphi′snativedate/timefunctions

Result:FileDateToDateTime(dft);

end;

end;

GetFileLastAccessTime()将会以Delphi的TdateTime

格式返回你所指定的文件的最后访问日期。

7.丰富多彩的标签。

我们已经不满足于Delphi提供的简单的标签,能不能在标签中有不同的字体,有不同的颜色,以此来丰富我们的表现能力。回答是肯定的,并且用不着第三方提供的控件,我们只要巧妙的利用Delphi自己提供的TRichEdit就可以了。首先将TRichEdit控件的边框去除:RichEdit1.BorderStyle:bsNone;同时设置只读属性为真:RichEdit1.ReadOnly:ΚTrue;然后,你利用write之类的软件制作好RichText格式的文本,通过以下语句就可以显示出来了:

RichEdit1.PlainText:False;

RichEdit1.Lines.LoadFromFile(′c:ιtest.rtf′);

8.如何防止Win95显示严重错误。

不管你的程序如何反复调试,交给用户之后,总有可能发生你意想不到的错误,如何避免Win95显示出白色的窗口,告诉你的用户发生了难堪的意外错误呢?我们可以这样做:

var

wOldErrorMode:Word;

begin

//tellwindowstoignorecriticalerrorsandsavecurrenterrormode

wOldErrorMode:SetErrorMode(SEM—FAILCRITICALERRORS);

try

//codethatmightgenerateacriticalerrorgoeshere...

finally

//gobacktopreviouserrormode

SetErrorMode(wOldErrorMode);

end;

end;

主要是利用SetErrorMode()来完成这一功能。

9.刚才用鼠标击了哪一个对象。

在Win95中,鼠标的右键起到了很大的作用,但是,由于历史的原因,对于右键的使用即使在Delphi中,也还不够有效,下面的程序可以告诉你如何知道刚才鼠标右击的对象名称。首先建立一个popmenu,然后以下的代码就可以告诉你刚才右击的对象名称:PopupMenu1.PopupComponent.ClassName。

10.检测CD-ROM或是其他磁盘是否有过变化。

最简单的检查CD-ROM或是磁盘是否有过变化的方法是检查其volume号码。你可以简单地运用下面的函数来返回磁盘的volume系列号码GetDiskVolSerialID(′E′),函数代码如下:

functionGetDiskVolSerialID(cDriveName:char)

:DWord;

var

dwTemp1,dwTemp2:DWord;

begin

GetVolumeInformation(PChar(cDriveName+′:ι′),

Nil,

0,

ΝResult,

dwTemp2,

dwTemp2,

Nil,

0);

end;

平均比Hive快24倍,Impala剑指Stinger 利用ElasticSearch和Redis检索和存储十亿信息 微软高管再度失血 媒体及娱乐副总裁因内部重组离职 Google研制智能隐形眼镜 帮助病人监测血糖指标 盘点2013:最优秀的HTML5&amp;amp;CSS3设计【多图】 AMD:未来PC将同时搭载Android、Windows双系统 如果你是CEO,你打算给自己开多少工资? IBM X6架构中国首发,目标是云与大数据 Pivotal聘用eBay前副总裁,继续发力云计算市场 智能手机的功能越来越复杂,可惜用户不买账 一周消息树:Windows 9要来了,会有哪些改变? 简单几步解决IE11无法显示此页的问题 研发周报:Java 8最终发布日期敲定,即使有bug也要发布 一周云热点:Google打造云中Hadoop便捷版,强势对抗AWS 追溯Unite大会设计理念 感受Unity进化史 移动周报:仰望大神,不如退而探索! 腾讯发布QQ浏览器微信版 支持拖拽分享、消息提醒等功能(图) 乐视TV:LetvUI连续31周迭代36个版本 190个乐迷需求实现119个 云服务商评估体系建立,首批10家企业通过可信云服务认证 《找你妹2》开发者云中游再声明:热酷涉嫌严重违约发布侵权竞品 柴可:大姨吗的轻应用抉择 盘点2013年IT界25个最古怪的面试题 云计算再掀创业热潮,19家企业入驻微软创投 IBM斥资12亿美元,全球大规模扩建数据中心 “Careerfocus之夜”2014年新春客户答谢晚宴在京举办 Google蚕食了维基百科的访问量? 微软Surface Pro 2 的成功之道 精简代码,为网站减负的十大建议 应用宝逆袭上位 将重构腾讯移动应用分发体系 eBay基础设施的成功经验,我们该如何复制? 自定义富媒体广告:NativeX SDK 5.0发布! 放大問題!20分 高分求教,在线等待!!具体问题请进..... 为什么java出这样的问题 初学者多层分布式的问题 请问谁有从数据库填充DropDownList控件的例子, 这个DropDownList是要在DataList的EditItemTemplate中的,谢谢! 请问谁有从数据库填充DropDownList控件的例子, 这个DropDownList是要在DataList的EditItemTemplate中的,谢谢! BC++安装只用15张DISK,后面3张为什么不用? 一个小问题 weblogic+ejb高手请出来赐教 000000000000020.0000000000000000分提问:以前的加密文件现在如何查看? 怎样销毁CFormView 对象? (在线等待) PB如何调用带参数,及返回值的SQLserver存储过程? #####如何捕获在窗体外,鼠标右键或左键CLICK时的鼠标的坐标点##### dll的问题 在VB的菜单中,如何加载图标? 安装问题! 关于高程,菜鸟请各位大虾帮忙!!!! 给datarow负值,在winform可以,在webform失败? 在线统计,在国内有哪些大企业应用了客户关系管理系统(CRM)??? MessageBox不能显示 简单问题,写文字时旋转90度(立即给分) 求救,我好迷惘! 怎么得到当前系统中安装的所有程序(软件)的列表? 什么叫做域(急用) select int (*fp)(int a,int b) 和 int *fp(int a,int b)有何区别 ADO中的_RecordsetPtr的查询问题 我是学VB了,但我不知道IIS是什么意思是否能给示解答,细细说明,增分 为什么我的xp经常一开机不久就发出警报声音 求救,我好迷惘! 请网友们注意接分 郁闷!太郁闷了!大家都来看看,散分 仓库物料存仓量统计问题,SQL语句怎样写,进仓、出仓在不同的表呀! 菜鸟请教高手:这样的代码能写吗 求救,我好迷惘! 怎样使热点(光标)跳到某个对像?? 内空,请sharetop进来领分 仓库物料存仓量统计问题,SQL语句怎样写,进仓、出仓在不同的表呀! 请问oracle和sql server两者最大区别是什么? 请问哪里有<vc60宝典>的电子书下载?不够分再加 用RDS技术要什么样的系统设定?? 如何判断image里有没有图片? 请问高手,能不能给edit的一定部分加阴影。 如果数据达到百万条,如何来优化检索速度???希望高手进来探讨!!! 请问大侠!一个网卡可以和两个ip绑定吗? 大家帮我找原因 开机时候如何进入dos状态? 前辈误会啦!我只是写了可把查询结果用表格显示的程序, 打印还是没有思路!!! 急哭... 重庆考程序员的兄弟们近来看看吧! 调度算法问题! 求救!!win2000的删除与添加程序打不开了? 哥哥4个苹果,姐姐有3个苹果,弟弟有8个苹果,哥哥给弟弟1个后,弟弟吃了3个,这时谁的苹果多少? 氯化铝是分子晶体还是离子晶体? 力学中的弹力问题3.下列说法正确的是?A.木块放在桌面上所受到的向上的弹力是由于木块发生微小形变而产生的?B.木块放在桌面上对桌面的压力是由于木块发生微小形变而产生的?C.用细竹竿 高一化学必修一归纳与整理 solidworks中,弹簧与轴之间,怎么装配啊? 力学中 支持力和弹力是怎么判断的?还有怎么判断支撑力和弹力 谢谢你们的告知.RT 有一堆苹果,4个4个地数余3个,5个5个地数余4个,6个6个弟数余5个,这堆苹果至少有多少个?苹果有59个,只需列出个有依据的算式,说明原因! 如图2,Rt△ABC中,∠BAC=900,M、N是BC边上的点,BM=MN=NC,如果AM=4,AN=3,则MN= . 高中物理力学方面,关于轻杆弹力的题!要准确答案!如图,轻杆AB=14.10,AC=10,当B端挂1N的重物时,BC水平,求弹簧的拉力? 八年级论文物理物态变化 ……每一章……知识点归纳整理, 常温下,甲烷的液化压力和气化压力是不是就是液化气瓶里的压力?气瓶里是纯甲烷液化气 △ABC中,∠BAC=90°,AB=AC,在BC上取M、N,使∠MAN=45°,判断BM、MN、NC为边的△的形状(急) 高一化学必修一、实验整理要试验总结 就是高一有多少个比较重要的试验 solidworks中这个弹簧怎么画 梦到摘枣有什么寓意? 有关力学的一道物理题 在水平长直的轨道上,有一长为L=2米的平板车在外力控制下保持速度v=4m/s做匀速直线运动,某时刻将一质量为m=1kg的小滑块轻放在车面的中点,平板车在外力控制下仍然保 20ml某气态烃,在100ml足量O2里充分燃烧后恢复到原状况(常温、常压),气体体积为70ml.求分子式 梦见吃摘枣吃什么意思 城市噪声来源有工业噪声、交通噪声和生活环境噪声.城市噪声来源有工业噪声、交通噪声和生活环境噪声.控制措施有将噪声严重的工厂迁出市区;对噪声大的机器安装消音器并限制使用, 20ml某气态烃,在100ml足量O2里充分燃烧后恢复到原状况(常温、常压),气体体积为70ml.求分子式 兄弟两个共有苹果24个,如果哥哥分给弟弟2个,哥哥的个数是弟弟的3倍,哥哥和弟弟各有多少个? 质量m=2kg的物体静止在水平地面上,物体与水平面间的动摩擦因素u=0.25,现在对物体施加一个大小为F=8N,与水平方向夹脚a=37°的斜向上的拉力,经5s撤去拉力,求物体通过的总位移.(g取10m/s²) solidworks装配体圆柱中心距怎么配合,它总是将面配合 兄弟两个共有苹果24个,如果哥哥分给弟弟2个后 ,哥哥的个数是弟弟的3倍,他们各有多少个苹果? 1.力学题目一个,木棍的质量是30kg,假设地板和墙壁没有摩擦力,如果不让这个木棍滑到,则需要的力f至少要多少? solidworks弹簧怎么装配到圆柱孔中怎么样才能同心 立体几何怎么学啊?必修1,3,4,5的东西不听都会的 为什么必修二的立体几何听了还是不会做?什么几个点,几条线,确定几个平面的最不会做了,还有异面直线角度也不怎么熟练,到底要怎么学啊? 在 solidworks中怎样实现弹簧与孔之间的饿装配 力学,请问AB和BC杆的轴力怎么算? 怎样学立体几何? 如图,BE,CF是△ABC的高,且BP=AC,CQ=AB.求证AP⊥AQ 做梦梦到吃枣媳妇梦见吃红枣 ,而且枣里面还有籽代表怀孕么? 立体几何怎样学 姐姐和弟弟分苹果,两人分得同样多,姐姐给弟弟10个,弟弟比姐姐多多少? 很简单的力学哟三句话1.压力属于弹力2.不相互接触的物体间也能产生弹力3.只有当具有弹性的物体被拉伸时才能产生弹力他们都错了.可是都哪里错了? 刚学立体几何,帮下忙已知在长方体ABCD-A1B1C1D1中,AB=4,AD=3,AA1=2,求异面直线AC1和BD所成的角大小 姐姐弟弟分苹果 他们分的同样多 姐姐给弟弟十个 弟弟比姐姐多多少个? 做梦梦到吃枣是怎么会事 好不好啊 如何学立体几何 姐弟两人共有连环画98本,姐给弟10本后,姐比弟还多2本,原来姐弟两各多少,怎么做? 关于力学,很简单的!1、背越式跳高可以把重心降低,为什么重心降低了就轻松呢?2、火箭升空的时候,它向上的推力是由燃料燃烧产生的气体提供的,为什么呢?为什么不是因为气体推到地面或空 solidworks怎么画弹簧我以前用的软件是PROE,现在刚刚装上solidworks软件,还不知道怎么画弹簧, 科学家提出不要把落叶扫光,你认为这是出于什么因素考虑的?科学家通过试验证明:40m宽的林带使噪声减少15dB-30dB. 做梦梦见枣是什么意思 梦见吃枣 关于噪声的减弱噪声的途径有三条:在声源处减弱,阻断传播途径,在人耳处减弱,其中最有效的是什么?例如:______ 求教一个很简单的力学问题模型:一质量为M木板置于于光滑的水平面上一质量为m的滑块放置在木板左端木板与滑块的滑动摩擦力为f用水平的恒定拉力F作用于滑块使之运动当M足够小的时候,木 列方程解答应用题:苹果和梨共重560千克,苹果的重量是梨的4倍,苹果和梨各重多少千克? 摩托车的消声器是在_______处减弱噪声? 昨晚梦到一棵枣树,上面结满了青枣,想知道意味什么啊? 怎么作旋转图形啊.如题、、最好把每一步都说清楚一点、急 噪声的定义从环境保护的角度上来看,凡是影响人们正常休息、学习和工作的声音,以及对人们要听的声音产生_____的声音都属于噪声. 一道很简单的力学问题!http://220.163.10.85:8080/wljs/UploadFiles_4905/200709/20070911130110632.doc 中的第6道的D选项 为什么物体A所受滑动摩擦力大小等于  mg cos 啊? 水果店存有30吨,第一次运出五分之一,第二次运出余下的三分之一,还剩多少吨? 为什么氯化铝是分子晶体啊求具体一点 求一篇关于一种生活中物理现象的论文关于力学或者电磁的 2500字 已知一个等腰直角三角形ABC ,角BAC是直角 M,N是BC上两点,角MAN是45度 问BM,MN,NC,的关系 AlCl3为什么是分子晶体啊? 如何判断杆上的弹力方向我觉得挺难的 这种题分析半天还不会 请帮我详细说明一下方法 在此先谢谢了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘