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

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;

首届SAP d-code大会在上海举办 【OSTC讲师专访】ZoomQuiet:因商业化而开源是中国开源界最大的囧处 亿元资金扶持+联手100家VC,腾讯的雄心壮志 美国史上最大IPO 能给阿里巴巴带来什么? 买Windows平板而非iPad或Android的十大理由 Framework7:不会Objective-C,也能开发iOS7应用 CocoaChina开发者大会 全新引擎Cocos 3d-x开源 Oracle和微软的抱团,以及对抗Amazon霸主的5个可用点 Agile已死 Agility长存? 论程序员的自我修炼 Github女员工因遭性别歧视离职 继七年iPhone、四年iPad后,苹果的下一城:Healthbook 普元CTO焦烈焱:专注于基础软件 在Spark上的深入实践 Python 3.4.0正式发布 未添加任何新语法特性 谷歌受困邮件挖掘丑闻,企图抹掉庭审记录 Python 3.4.0发布,增加了多个功能模块 美的+阿里,“云端”战略第一把火是智慧家居 对产业互联网战略的战术思考——争夺企业信息入口的战争 加入Cassandra,OpenStack发力DBaaS生态圈 死磕Google Keep,微软正式发布Mac免费版OneNote 《近匠》安管云CTO石磊:降维安全的开放平台 2014 Unity亚洲开发者大会&#183;中国站讲师名单议题全部出炉 【独家专访】红旗Linux元老:猎猎红旗永飘扬 借助三大技巧 助你提升API状态页面 集成GemFire,Hadoop生态圈的又一把火 次世代光照体验:Unity 5面世,功能系统全升级 深入浅出,以咖啡店为例演示Web应用程序扩展 百度Clouda:可依赖的实时JavaScript开发框架 Oracle发布Java 8正式版及JDK 8 编程语言中一些令人抓狂的规则 廉颇未老,微软股价创14年新高 1.7gmsdn如何改成3张碟刻出来 启动慢? 有什么方法实现点击"提交"按钮后,弹出一个框显示表单里的数据,"确定"后再提交,"取消"后不提交? 请教vb 字符串问题 急!明天要啊!(帮忙啊!)分在另一贴给! 请问如何创建一个组控件,然后又可以动态调用?请进!:) 用Jbuilder开发,怎样配置才能开发j2me? 关于HOOK和键盘屏蔽的问题??? 如何在自己的网页上嵌入google的页面翻译功能 有关2k的内存问题 阴谋家已被清除!大家尽兴的庆祝呀! 问一下 C++基础的弱智(20分钟内结贴) 高手请看:实形变量在不同的过程中调用问题?(大家都要遇到的问题,来着有分!) 还是没解决呀!!1 350元左右的MP3播放器谁好阿?你给推荐一下? 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 昨天做成功了有限集手写汉字识别的程序,高兴,散分!!! SOS。。。一个很基础的问题 。。 系统设计和软件设计的说明书问题 [请问]两个JavaScript问题 一个企业的办公系统,使用人数5k人,预算多少合适? 我中了“冰河” 怎么办? 菜鸟问题:linux下怎么把文件a和b压缩成c啊? 请问大家一些事情(关于反汇编) 菜鸟问题:linux下怎么把文件a和b压缩成c啊? 资源管理器中选中的多个文件怎样传给我的程序 高分求购网页 在哪能下载SYBASE11.5的客户端和服务器端?急!!!!! 显示器的问题 请问如何搜索到网络中所有的消息名,即用Net Name命令显示出来的 急,有办法用java做个程序:输入“(3>4)or(3>5)",判断后输出其对应的bool值吗? 怎么在自己的程序里注册一个组件? 问一个小问题,高分相赠! mssql的JDBC那有得下,听说微软站上的那个只能连自己的SQL,有没有完全版的呀,在哪可以下? 高分求救,出现乱码了,怎么办?高手请进 DirectShow & Mpeg4! 将一sql语句放入了一个string变量中,我应该有什么函数执行他呢? 急。。。。。。。一个简单的问题。关于下拉列表的 問題集錦﹗望好心人解答﹗ 程序员书上的编程擂台的示例文件在哪里阿 怎么在自己的程序里注册一个组件? 请问有哪为高手会用Remote Data 控件 在哪时可以下载,金山词霸2002? 交朋友 急事!!!请各位高手帮帮手!教教小弟!! 怎么使用ExitWindowsEx()? 寻求拼音码函数,大家帮帮我吧~~~~~~ 请问关于工具栏的问题 .net中从十六进制向十进制转换底问题 考研成功,散分! 上海六年级第一学期数学练习部分3.只要第5道 小学生安全问题问卷 题目.答案 英语中那些副词只修饰原级,只修饰比较级 介绍石灰石是怎样形成的 杜甫的诗歌深刻反映了时代特点,被后人称为诗史.请你搜集杜甫的诗歌,然后找出其中包含的信息. 什么叫密集恐惧症 石灰石怎样检验 当官不为民作主,不如回家卖红薯是什么意思? 密集物体恐惧症是什么啊? 妇检室的英文翻译 当官不为民做主不如回家卖红薯的意思 英语中修饰原级的副词有哪些? 第5章是 有理数我要40页到81的答案! 关于白色污染的问答题(不是调查问卷)我要一些白色污染的问答题注:(不是调查问卷)急!需要在6月1日之前用 物理设计性实验可行性分析怎么写啊 由干燥的氯酸钾和二氧化锰组合成的混合物的质量为9.9克.把该固体混合物放到大试管中加热,完全反应后,冷却到反应前的温度,称得试管中固体物质的质量为7.2克.(1)求原混合物中氯酸钾的质 找一个问卷(或一系列问答题)的全部内容,根据该问卷所打出的问题可以了解发现回答问题的人的精神状况全部答对这一系列问题(或问卷)的人不是疯子就是阴谋家,都是精神极度偏激人 物理黑盒子设计性实验【要求】:1 给定一个黑盒子 上面有3个测试点,各测试点之间连接有电学原件,可能的原件有:电阻 电池 二极管 三极管 要求用给定的万用电表确定盒内原件和连接方式 溶液的计算题要把1000mL60%的硫酸溶液,(密度1.5g/mL),稀释成10%的硫酸溶液,能得到10%的硫酸溶液多少克?需要加入多少毫升水?(水的密度为1g/mL)下次遇见这样的题怎么算啊? 高中数学,14 斑斓 怪诞 默契 田垄 蚱蜢的意思.可以的话.找四个词语造个句子吧! 什么是asm哪位大哥能帮我解释一下什么事asm,自动储存管理,我看了百度百科,可是看不懂啊,那个大哥能给我解释一下啊,就是自动储存这一方面的 a>b>c求证 bc^2+ca^2+ab^2 回环曲折,亦复如是,斑斓,怪诞,默契,田垄的意思偶急.. Baby you know I want you forever翻译为中文是什么意思 请教高中数学(14),谢谢!设A(x1,y1),B(x2,y2)是平面直角坐标系上的两点,定义点A到点B的曼哈顿距离L(A,B)=|x1-x2|+|y1-y2|,若点A(-1,1),B在y^2=x上,则L(A,B)的最小值为____ 为什么任何溶液中,OH离子和H离子的乘积都为响应温度下的水的离子积常数值那到底为什么只于温度有关呢 八年级上册化学两道溶液计算题要题目和答案 设等差数列{an}的前n项和为Sn,已知a3=12,S12大于0,S13小于0,求公差d的取值范围.非常非常的感谢!) 为什么稀溶液中的c(H)+与C(OH)-之积也是10的负14次方和水的离子积一样最好用算式说明 甲乙两同学放学回家,甲比乙多走五分之一的路,乙走的时间比甲少十一分之一,求甲乙两同学回家的速度之比. 如何鉴别一种酸是弱酸 Flat 9A 汉语意思 有5%的废硝酸和53%的浓硝酸,用什么比例才能制成浓度为25%的硝酸浓液 中性酸与弱酸鉴别公式H+(aq)+A-(aq) Ka=[H+][A-]/[HA] 各各都是什么啊?谁能教教我怎么算啊, I love flat的中文意思? 有三个小朋友,他们的年龄恰好一个比一个大1岁,并且他们三个年龄的乘积是210,求三个儿童的年龄 高中必修二政治 求答 什么是密集物体恐惧症?比如说这张图 7 14 20 21 28 30这六个书平均分成2组,使这2组的乘积相等,可以怎么分算式原因都要有 用a,e,m,n,r,s,s,p组成的单词.可以是英文、法文、德文、意大利文、西班牙文、拉丁文.最好顺便把单词的意思也告诉我. 密集物体恐惧症 小丽家一季度每个月的用电量都是前一个月的“十五分之十四”,已知三月份的用电量是196千瓦时,三月份比一月份少用多少千瓦时?如果1千瓦时电的电费是0.61元,小丽家一月份比三月份多缴多 . 为什么会有密集物体恐惧症?我现在想起那玩意都要揪心难受死,就想知道原理是什么?为什么人们看到那个会恐惧?这和人的什么有关?不要怎样治疗,就想知道什么原因不是人们对密集物体本能 兴趣小组为了测定某钢铁广铁样品中铁的质量分数,在实验室中称取生铁样品5.8可放入烧杯中(烧杯的质量为30克).然后在加入50克稀硫酸,使之充分反应后称量,烧杯及烧杯中物质的总量为85.6 “flat”在这句话中是什么意思?On one day he had no change for a fifty,on another he was flat out of checks.这句话的意思是“有一天他对不开一张50元的钞票,又有一天他的支票用完了。”我只是不清楚flat在 化学方程式里的聚合物的括号怎么打比如聚乙烯的中括号中间加个横线的那种符号怎么打,不要给我打两个分开的横线 八年级下第二章第三节化学应用题制取20克的氧气需要分解多少克的过氧化氢? 密集恐惧症是什么 化学方程式中的Caco3什么时候要加↓ 怎样理解当官要当副,千万莫常务呵呵!有现实的意义.官方答复的话还有一些问题.这充分反映了一些人的心态,当副不能只有权而无责,常务是很辛苦,重要是既不是正职,又要处理与其他副职的 当溶液中含有阳离子______ 、______时,SO4 2-\SO3 2-\CO3 2-\Cl - 在溶液中均不能存在 水既是反应物也是生成物的化学反应有哪些?比如有氧呼吸中水既是反应物也是生成物 还有类似的反应吗 多列举一些 见官莫向前,做客莫在后 什么是密集恐惧症啊 炽痛、嗥鸣、斑斓、谰语、怪诞、亘古、默契、田垄、蚱蜢、污秽 读音! 冰若止水啥意思 “见官莫向前,做客莫在后”这话出自那里,有什么道理吗? 什么是密集恐惧症?患者信息:女 23岁 河南 三门峡 病情描述(发病时间、主要症状等):只要看到密集的东西都会觉得心里麻麻的,想把那团东西给弄没了,浑身鸡皮疙瘩起想得到怎样的帮助: 德防长批评美国监控传闻 称欧美关系将泰国一巴士坠山沟致21死 司机驾驶俄公交炸弹袭击或引发连环恐袭 索契冬挪威销毁叙化武受美国热捧 坦言国内压也门一男子烧死15岁女儿 只因其与未日本6名女性涉嫌在网络上上传猥亵视频澳洲一名男子涉嫌逼迫未婚妻致其死亡接美观测到迄今最古老星系 距地球131德防长批评美国监控传闻 称欧美关系将媒体评美国6岁儿童说“杀光中国人”:美国14岁少年被控刺死女教师 据称性澳琴师自称造出完美小提琴 可与世界名澳七旬男子苦等救护车未果 在家中不治调查指许多澳洲学生吃“聪明药”提高成柬埔寨反对党举行街头示威 抗议选举成日本一公司推出价值66万纯金奥特曼美国职棒大赛 球员为赢对手纷纷留长胡日本6名女性涉嫌在网络上上传猥亵视频韩考虑增加新一代战机项目预算 现为4德防长批评美国监控传闻 称欧美关系将俄总理七小时“安徽印象”9月金融数据出炉 其中两“新高”引人司法改革背景下人案矛盾破解研讨会在沪中拉企业高峰会描画合作前景:共签64王宝强亮相朝阳法院沉默不语 院方要求天瑞地安大调查:近80%视频游戏玩家除了保级悬念还能围观大牌球星 华龙网摩苏尔发力 奥巴马中东政策能否“一雪暴雨黄色预警:广西贵州等局地有大暴雨李克强部署进一步振兴东北台北故宫以“公主雅集”,品赏七百年前寻找世界市场中的新机遇人民币并未进入贬值通道6投6中!TT还没被卡戴珊榨干 年轻郑州持续深化文明城市创建 以优美环境70年代嬉皮士文化熏陶下的美国青年泰宁县法院能动司法走进田间地头大田县公安局城关派出所开展精准扶贫工泉州边防支队机动大队二中队严格落实“福安边防大队推进军民融合工作福安边防大队推进军民融合工作莆田东峤派出所深入开展网络安全知识宣
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘