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);

时间: 2024-10-27 11:21:08

Delphi编程技巧点滴的相关文章

071_《Delphi7编程技巧与实例精解》

<Delphi7编程技巧与实例精解> Delphi 教程 系列书籍 (071) <Delphi7编程技巧与实例精解> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 张海卿 张占军 丛书名: 其他 出版社:国防工业出版社 ISBN:7118030163 上架时间:2003-4-15 出版日期:2003 年1月 开本:16开 页码:365 版次:1-1 内容简介 本书汇编了Delphi中比较经典的60个实便,包括8大部分,即基础知识.图形国像

JavaApplet编程技巧

编程|技巧 1. Java Applet 概 述 Java Applet 程 序 分 为 两 类:Java 小 程 序(Applet) 和Java 应 用 程 序(Application), 这 两 类 程 序 是 有 区 别 的.Java Applet 嵌 入 在WWW 的 页 面, 作 为 页 面 的 组 成 部 分 被 下 载, 并 能 运 行 在 实 现Java 虚 机 器(JVM) 的Web 浏 览 器 中.Java 的 安 全 机 制 可 以 防 止 小 程 序 存 取 本 地 文

PHP编程技巧:看实例学正则表达式

编程|技巧|正则     首先,让我们看看两个特别的字符:'^' 和 '$' 他们是分别用来匹配字符串的开始和结束,一下分别举例说明: "^The": 匹配以 "The"开头的字符串; "of despair$": 匹配以 "of despair" 结尾的字符串; "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配: "notice": 匹配包含noti

ASP编程技巧大全

编程|技巧 <% ''#######以下是一个类文件,下面的注解是调用类的方法################################################ ''# 注意:如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功能将无法使用 ''# Access 数据库类 ''# CreateDbFile 建立一个Access 数据库文件 ''# CompactDatabase 压缩一个Access 数据库文件 ''# 建立对象方法: ''#

关于我的自动生成编号的方法(来这么久,第一次写个人的编程技巧,不知能不能上精华)

编程|技巧|精华 前言:    用过许多序号的方法,indentity 或 new id() ,都不好用,自己写了一个,这个序号的特点是:每次取相应表中的系统当天最大序号,如果当天无记录,则自动生成一个当天序号 1.建种子表,这个表用来保存各个表目前已使用到的最大序号--种子表create table SEED (BM  varchar(20) not null,   --表名BH   varchar(12) not null,   --种子编号constraint PK_SEED primar

深入Delphi编程(OOP)

刚刚接触的Delphi的朋友,可能最感兴趣的就是它丰富.强大的VCL(可视化构件库).仅仅向窗体上扔几个构件,甚至不用动手写代码,就能很容易地做出一个有实用价值的程序,真是令人激动.但是,VCL只是Delphi的一小部分,Delphi的优秀远远不只是表现在VCL上.如果你仅仅停留在使用VCL这一阶段,那么你永远也不可能成为一个真正的Delphi高手.记住,必须超越VCL,才能够接触到Delphi的核心. 那么,在Delphi的VCL后面,到底隐藏着什么呢?本文将讨论两个比较高级的Delphi主题

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]

在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abort)信道,相关的原理,可以参考我的文章<服务代理不能得到及时关闭会有什么后果?>.在真正的企业级开发中,正如我们一般不会让开发人员手工控制数据库连接的开启和关闭一样,我们一般也不会让开发人员手工去创建.开启.中止和关闭信道,这些工作是框架应该完成的操作.这篇文章,我们就来介绍如果通过一些编程技巧,让开发者能够无视"信道"的存在,像调用一个普通对

Delphi编程的优秀辅助工具-GExperts

大家都知道,Delphi语言的功能是相当强大的,由于其拥有很好的扩展性,因此很多公司.团队和个人开发了辅助Delphi编程的工具软件.GExperts就是一个这样的免费而且优秀的软件(在我的印象中,好像只有控件包中的Rxlib和Mwedit能够与之媲美).GExperts是一个Delphi的扩展功能软件,也叫做Experts,我现在使用的版本是0.97.1,最新的版本相关信息可以到它的网站上去看:www.GExperts.com. 下载完毕后,执行安装程序,然后再进入Delphi(在安装GExp

C# Winform多屏幕多显示器编程技巧实例

  这篇文章主要介绍了C# Winform多屏幕多显示器编程技巧实例,本文直接给出代码实例,需要的朋友可以参考下 在窗口的中间有一个System.Windows.Forms.PictureBox控件(该控件区域的面积为所在窗口的1/4),当该控件的大部分区域落在其中一台显示器时,在另一台显示器将不显示该控件,(该PictureBox控件将移动到主显示器所在的窗口区域). 实现方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2