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

Delphi技巧点滴

HTML文档下载 WORD文档下载 PDF文档下载
Delphi技巧点滴

1.如何检测Insert、Capslock、NumLock、ScrollLock状态键的状态

Delphi可以调用Win API的Getkeyboardstate()函数。

常量 按键名称

VK_INSERT znsert键

VK_NUMLOCK Num Lock键

VK_CAPITAL Caps Lock键

VK_SCROLL Scroll Lock键

键盘缓冲区每一位都有一位特定的格式,对于状态键来说,最低位是1时表示状态键处于ON状态,你可以使用odd()函数来确定这一位的状态,以下是一个简单的例子请参考。例子中放置一个Timer控件、一个StatusBar状态条。

procedure TForm1.Timer1Timer(Sender: TObject);

var ks:tkeyboardstate;

begin

getkeyboardstate(ks);//检测键盘函数

if odd(ks[VK_NUMLOCK]) then

statusbar1.panels.items[0].text:='NUM'

else

statusbar1.panels.items[0].text:='';

if odd(ks[VK_INSERT]) then

statusbar1.panels.items[1].text:='INSERT'

else

statusbar1.panels.items[1].text:='';

if odd(ks[VK_CAPITAL]) then

statusbar1.panels.items[2].text:='CAPITAL'

else

statusbar1.panels.items[2].text:='' ;

if odd(ks[VK_SCROLL]) then

statusbar1.panels.items[3].text:='SCROLL'

else

statusbar1.panels.items[3].text:='';

end;

end.

2.屏蔽系统按键

也许你希望程序在运行时不想让用户按系统按键 Alt-Tab 或 Ctrl-Alt-Del,那么可以通过以下的程序来屏蔽这些按键。  

procedure TForm1.FormCreate(Sender: TObject);   var tmp

Flag :integer;

begin

tmp := 0;

Flag := 1;

//屏蔽 Alt-Tab

SystemParametersInfo( SPI_SETFASTTA-SKSWITCH

Flag

@tmp

0);

//屏蔽 Ctrl-Alt-Del

SystemParametersInfo( SPI_SCREENSAVERRU-NNING

Flag

@tmp

0);  

end;

当你要恢复功能键时用以下代码:

Flag := 0;

SystemParametersInfo(SPI_SCREENSAVERRU-NNING

Flag

@temp

0);

3.隐藏和显示Windows的任务条

如何隐藏和显示Windows的任务条?仅仅调用以下的函数就可以。本程序的思路实际上就是先找到标题条的句柄,然后向它发送相应消息(SW_HIDE/SW_RESTORE)即可

procedure hideTaskbar;

//隐藏

var wndHandle : THandle;

wndClass : array[0..50] of Char;

begin

StrPCopy(@wndClass[0]

'Shell_TrayWnd');

wndHandle := FindWindow(@wndClass[0]

nil);

ShowWindow(wndHandle

SW_HIDE);

End;

procedure showTaskbar;

var wndHandle : THandle;

wndClass : array[0..50] of Char;

begin

StrPCopy(@wndClass[0]

'Shell_TrayWnd');

wndHandle := FindWindow(@wndClass[0]

nil);

ShowWindow(wndHandle

SW_RESTORE);

end;

end;

3.如何将你的程序放在Windows启动中

有时需要让Windows在启动时自动运行你的程序

如何在程序中实现呢?

使用Regedit查找HKEY_LOCALMACHINE\Sodtware\

Microsoft\Windows\CurrentVersion\Run

你会发现所有的Windows启动时调用的程序都在这里

于是你将你的程序增加在这里就可以了。名称为你的程序的标题

其值为你的程序的执行路径和文件名称。

在程序中实现可以使用TRegIniFile或者使用TRegistry都可以。

User Registry;

Var RegF:TRegistry;

begin

RegF:=TRegistry.Create;

RegF.RootKey:=HKEY_LOCAL_MACHINE;

try

RegF.OpenKey('SOFTWARE\Microsoft\

Windows\CurrentVersion\Run'

True);

RegF.WriteString('MyProg'

Mypr-og.exe

');

except

...

End; {try}

RegF.Close;

RegF.Free;

end;

4.如何动态更新StringGrid的颜色

StringGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉你如何根据显示的内容改变字体的显示颜色。例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为StringGrid.On-DrawColumeCell。

procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if Table1.FieldByName('Population').AsInteger > 20000000 then

StringGrid1.Canvas.Font.Color := clBlue;

StringGrid1.DefaultDrawColumnCell(Rect

DataCol

Column

State);

end;

5.Memo的Undo功能

在平常

你可以在MEMO中使用Ctrl+Z进行UNDO操作,但在程序中

你可以使用:

Memo1.Perform(EM_UNDO

0

0);进行UNDO操作.

当你使用一个enable/disable的菜单时

你可以使用:

Undo1.Enabled := Memo1.Perform(EM_CANUNDO

0

0) <> 0;

6.Delphi 中如何改目录的名字

在DOS低版本下这个问题比较麻烦(可能要使用move命令),在Win98/98的DOS窗口下可以简便地使用Ren命令或者在资源管理器中“重命名”。

那么在在Delphi下如何做呢?

调用RenameFile函数,如:

RenameFile('c:\wang\temp'

'c:\wang\tmp');

7.关闭Windows

控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等

ExitWindowsEx(UINT uFlags

DWORD dwReserved);是实现这一功能的API函数。

首先定义常数

const

EWX_FORCE=4;

//关闭所有程序并以其他用户身份登录

EWX_LOGOFF=0;

//重新启动计算机并切换到MS-DOS方式

EWX_REBOOT=2;

//重新启动计算机

EWX_SHUTDOWN=1;

//关闭计算机

运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句:

ExitWindowsEx(How

0);

就可以达到目的。

8.检测磁盘是否变化

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

function GetDiskVolSerialID(cDriveName:char):DWord;

var

dwTemp1,dwTemp2:DWord;

begin

GetVolumeInformation(PChar(cDriveName+':l')

Nil

0

Result

dwTemp2

dwTemp2

Nil

0);

end;

9.防止Win95显示严重错误

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

首先定义一个Word型变量:wOldErrorMode,然后在程序的适当部分添加如下代码

wOldErrorMode:=SetErrorMode(SEM_FAILCR-ITICALERRORS);

try

{此处填写程序主体部分}

finally

SetErrorMode(wOldErrorMode);

10.临时路径

有时需要Windows的临时路径来做一些诸如备份等工作,那么就要知道路径在哪?我们可以这样得到它:

var TempPath:pchar;

begin

GetTempPath(20

TempPath);

//返回路径名

edit1.text := TempPath;

end;

11.实现打开文件

打开Windows已经注册的文件其实很简单,根据以下代码定义一个过程:

procedure URLink(URL:PChar);

begin

ShellExecute(0

nil

URL

nil

nil

SW_NORMAL);

end;

在要调用的地方使用

URLink('Readme.txt');

如果是链接主页的话,那么改用

URLink('http://www.pcdigest.com');

12.检测驱动器类型

当要知道所选的驱动器属于什么类型时,请看下面的程序

var x:integer;

driver:pchar;

begin

driver:='f:\';

x := GetDriveType(driver);

Case x of

2: Label1.Caption :='该驱动器是可移动驱动器';

3: Label1.Caption := '该驱动器是固定驱动器';

4: Label1.Caption := '该驱动器是网络驱动器';

5: Label1.Caption := '该驱动器是CD-ROM驱动器';

6: Label1.Caption := '该驱动器是虚拟驱动器';

Else Label1.Caption := '该驱动器无效';

End;

end;

13.驱动器容量

要得到驱动器的容量和剩余容量,用下面的程序

var

driver:pchar;

sec1

byt1

cl1

cl2:longword;

begin

driver:='c:\';//要显示的驱动器名

GetDiskFreeSpace(driver

sec1

byt1

cl1

cl2);

cl1 := cl1 * sec1 * byt1;

cl2 := cl2 * sec1 * byt1;

Label1.Caption := '该驱动器总共容量' + Formatfloat('###

##0'

cl2) + '字节';

Label2.Caption := '该驱动器可用容量' + Formatfloat('###

##0'

cl1) + '字节';

end;

StarCraft开发:用肮脏的技巧解决难题 忠于用户:美团1000亿的卫星与Groupon的窘境 360周鸿祎开放日回应质疑:都是做搜索惹的祸 轻量级的高性能Web框架:Play 为什么会失败?社交鼻祖Friendster的“验尸”报告 那些年Google公开的大数据领域论文 遍地撒网,重点培养,King.com颠覆性游戏商业模式 Adobe正式发布Photoshop Touch图像处理应用 2013年全球重要黑客大会一览 Gartner:2013年公有云将增长18.5%,达1310亿美元 开源炫彩界面库简介 一周消息树:我的十年编程自学之路 移动搜索状态:谷歌称雄 仍有较大发展空间 移动周报:我为什么弃用Objective-C而选择RubyMotion? 2月浏览器排行:IE高歌猛进 Chrome创17个月新低 Twitter创始人:最好的程序员大多是自学成才的 Evernote遭到攻击,5000万用户密码重置 VC++开源项目:P2P播放器AVPlayer NetIQ亚太区经理Ian Yip:移动社交工具崛起带来新机遇 快播CEO王欣:我不做内容,只钻技术! EMC中国凭什么说营收5年再增5倍? HTML5:或助三星Tizen 2.0逆袭主流移动OS 互联网巨头公司为何联合开发WebKit? 继Windows Blue:WP8升级或今年圣诞前到来 中国黑客部队攻击美国23家天然气公司 [CTO俱乐部第93期] 移动应用研发及位置在线平台架构分享 TeamToy——开源的团队高效协作工具 2013年数据中心发展的五个关键因素 可穿戴式设备:高调的Google 低调的苹果 由CloudFlare宕机引发的思考 传iWatch年内推出 或成苹果救命稻草 校园网查看ip的问题 tuxedo分组很有学问,分不好会死,还有内存泄露,请赐教 有关页面调度的课程设计 新手问题,在线等! 内存大小是否会影响到网络速度? 谁来救我 ,SOS,求用C语言写的编译器 修改数据出错,不知为何? 等级考试的问题 请问能不能在不同用户登陆的情况来决定服务A是否启动。 关于还原精灵转储后win98不能启动的问题,请指教!~ 今天,我终于听到项目经理的一句内心话,让我们作为程序员感到一阵阵的寒心 请教一下 dll调试问题 怎样得到OnLButtonDown的point在整个屏幕上的坐标啊?谢谢 递归调用FindFirstFile、FindNextFile、FindClose的问题 页面调度有关的课程设计 关于client端与server端的连接问题 请问能不能在不同用户登陆的情况来决定服务A是否启动。 Textbox如何禁止它记忆以前曾经输入过的值? 我的XP的CPU经常占用90%以上,高手指点. 安装完win2000,又安装了天网防火墙,再安装SQL server 2000,快完成时启动服务警告“无法定位程序输入点” 急招深圳周边(含深圳).Net程序员 ??qustion Laney(6吨大肥猫) 快来啊^@^ 有关struts的<html:text>标签的问题!!!!!!!!!!!!!!!!!!!!!!! 为了考试挑灯夜读,遇到一个菜问题请大家帮忙! 哪位高手帮帮我!时间紧急! 关于还原精灵转储后win98不能启动的问题,请指教!~ 有几张漂亮图片,看看你的计算机是怎么累死的 求C++算法代码。 怎么实现在IE中将查找到的关键字用红色标记指示出来? 求C++算法代码。 请问哪里可以下载Numega DevPartenr Studio 测试工具 ㊣㊣ 什么也不多说了,帮忙给解决这个问题吧, 先多谢了!! ㊣㊣ 有个小小问题 寻找监测某端口的数据流量软件 都市幽灵·里面一定有宝藏 非常奇怪:为什么超链接无效? 显示异常 下个星期开始到新公司了,请大家给点经验,好吗 急!jsp+mysql,急寻blob输出方法!!! 修改记录问题 StringGrid的自画 导出 救命呀,关于XP的激活问题. 语句 请问有什么好的串口调试工具,可以模拟串口发送数据的??????? 简单问题高分相送 MessageBox.Show 方法需要什么样的名空间 使用ghost硬盘刻录硬盘怎么区分源盘和目标盘,请大虾详细说说,在线等 概念性问题(没办法,太笨了,见笑了) 英语翻译A data structure is a way to store and organize data in order to facilitate access and modifications.No single data structure works well for all purposes,and so it is important to know the strengths and limitations of several of them.这 高一数学题目..不会 ..求解1.已知U=R,A{X∈R|1<X<4} B={X∈R|X≤-1 或 X≥3},求CuA和CuB2.已知全集U={0,2,a的平方+2a+3} A={0,2} CuA={1,2},求a的值3.已知集合A={X∈R| 1≤X≤5} B={X∈R| a≤X≤2a+1} 且A≥B,求a的 少昊、颛顼、帝喾、.尧、舜他们还有官名吗 为什么我单词3500都背会了但阅读还是老看不懂? 时光荏苒,怎么念 为什么希腊是现代科学精神的起源? 为什么背了单词还是看不懂文章单词尽管背了,可现在一做阅读发现单词还是看不懂啊,郁闷啊,只有90多天了,咋办 品读经典,完成下面的填空.1.《水浒》中的主要人物有:行者______,花和尚______,黑旋风______. 黄帝、颛顼、帝喾、尧、舜庙宇在什么地方 单词背了就忘 阅读看不懂 愁死了 世界的统一性问题中,何谓一元论?何谓二元论?如题,要确切.重点是一元论与二元论. The most chershed Thing in life is friendship The most precious thing Between us怎么翻译没什么难度吧! 在玉树地震时,电视新闻和报纸进行了大量的报道,谈谈最让你感动的一个画面,一个人或一件事 论述世界统一性原理是唯物一元论的前提和基础 Sincere forever,the friendship forevtr,the dearones forever,love forever ls 惆怅是什么意思 世界的统一性在于它的什么 小明先向东走了5米,又向西走了3米,一共向东走了多少米?如果规定向东的方向为正方向 谁能帮我写篇文章RT,主题是庆祝火锅店开业一周年.字数800左右. 惆怅的意思是什么?拜托了各位 谢谢 高一数学题 谢谢了诶~1.如果loga2>logb2>0,那么( )A.1 谁能帮我写篇作文啊?《爱点亮我的心灵》700字 一定是亲身经历的~ 请问一下惆怅是什么意思? 高一数学诶……泪流满面求指导做前三道就好了 我承认我问题很多==请给详细解释 谢谢 七年级下册地理的重点? 指出句子所运用的修辞手法:1.他正向古代典籍钻探,有如向地壳寻求宝藏 2.闻先生大无畏地在群众大会上,骂特务,慷慨淋漓,并指着这群败类说:你们站出来!你们站出来!阅读题:1.仰之弥高,越 《大道之行也》全篇课文的断句 您好,请问杭州离海宁有多远? 人情冷暖 世态炎凉 是什么意思 Mr Smith often helps the poor people.He is a man with a kind h_____________Mr Smith often helps the poor people.He is a man with a kind h_____________ 什么叫结构化程序设计?它的主要内容是什么? 翻译成英语 人情冷暖世态炎凉 “三皇五帝”中为何把炎帝划分在“三皇”里,而黄帝划分在“五帝”里在中国通史远古时期传说中,黄帝和炎帝同为有典氏的儿子,都是很杰出很有名望的部落酋长,为什么“三皇五帝”里把黄 英语为啥这么难? 世态炎凉鸡最懂,人情冷暖鸭先知. 三皇的“天皇”、“地皇”、“泰皇”,和“伏羲”、“神农”、“黄帝”.是一样的么?如题 为什么英语这么难 翻译 企业文化我们企业是以位置相关的各种信息的应用与发展,维持与改善人类生活作为企业发展方向和坚定不移的目标.把位置相关的信息领域所取得的成就做为我们衡量一起活动的标准. 三皇中的“黄帝”与五帝中的“黄帝”是否一样? 为什么英语回这么难 念天地之悠悠,独怆然而涕下.神木意思? 某天文观察者观看到下列现象,依据天体的相对位置判断,不可信的是.白天看到日食,同一天晚上看到月食为啥不对,日落后既看到火星又看到木星为啥对?跟剧天体的相对位置判断 为什么英语对于我来说这么难? 翻译:念天地之悠悠,独怆然而涕下 关于天文星象的基础问题:是根据什么判断一个星次里边有二十八宿中的哪几个呢?比如说正月,如果在正月的时候观星,是在黄昏的时候太阳落山的西方出现的星宿属于娵訾吗?是我没有表达清 世态炎凉人情冷暖世态炎凉.人情冷暖.为什么真么说 在经济繁荣时期和萧条时期因怎样分别运用财政政策? Taking your measurements won't help when it comes to picking your size (v-2s)/(2x-u)=(v-s)/s (u、v都是正数,且v+u≠0,求出s,并推导出1/s=(1/u)+(1/v) 如何提高学前教育经济效益 英语翻译when it comes to 一般在什么时候用的 已知圆面C:(x-a)^2+y^2 怎么写学前教育专业学习情况? 黄帝姓公孙,根据司马迁史记记载,为何其孙,孙之孙颛顼和帝喾都姓高,即高阳和高辛. 重点论也是一元论,对吗, 这是科学,请学霸帮我,谢谢! 请从语法角度分析.The date marks the end of...the date marks the end of one of the periods of roughly 400 years into which the Mayan calender is divided. 谁能帮我写篇文章 为什么在发达的资本主义国家美国马列主义著作有一定的市场 能帮我翻译一下这个句子吗?at the end of an income year ending on the date of death 芙蓉姐姐万圣节化身僵尸新娘 透视婚纱突尼斯总统高度评价突中双边关系新型冠状病毒感染者首现阿曼Facebook测试软件监控鼠标所有世界首条跨亚欧海底铁路隧道开通全球空姐制服比拼 日韩空姐靓丽抢眼(路透社关注《新快报》记者陈永洲被批捕美报:安徽官员“悬浮照片”引嘲笑气味让居民受不了 泰国辣酱工厂加州遭日媒:西方低估中国“西进战略”重要性世行称斯里兰卡为南亚商业经营环境最好印度长途巴士车祸后爆炸 45名乘客被因特尔向Verizon移交了流媒体电一颗遥远行星堪称地球“兄弟”俄媒:学术腐败成中国科技进步拦路虎历史上最著名的五大间谍财政部:加强地方结余结转资金管理 加福布斯公布2013最有权力人物排行榜北上广 请给奋斗中的年轻人一张床16岁少女骗倒四省10余派出所:浙江王毅出席中意政府委员会第五次联席会议联合国拟大幅增加中国会费 中方反对韩星IU对张基河一见钟情 恋情亦有欢澳培育出更逼真人工肾脏 为肾衰竭患者驻尼中资企业为尼日利亚当地居民捐赠抗加媒:超95%多伦多华人关注加联邦大老马大赞郭艾伦:和他对位才能激发出我郑永年:中美都不能出现战略失误韩媒:韩经济已完全摆脱MERS阴影 沪指微幅高开0.1%保险石油股携手护美国政府:无法确认有关俄导弹落入伊朗美军误炸阿医院致22死 医疗组织称仍日媒:日俄争议领土谈判分歧明显 前景俄军苏-24战机挂载Kh-25先进导歹徒深夜持刀抢劫单身女子 民警携朝阳北京市开展 “春雷”专项行动 严打盗前联大主席卷入受贿案 潘基文重申不会香港尖沙咀消防局爆集体性侵同袍丑闻 邛崃用“市管校用”高招 盘活整个师资周六上班机动车不限号 下周一起新一轮新疆皮山县发生3.7级地震 震源深度丰田将推出可变身发电机的燃料电池车
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘