Delphi技巧点滴

爱覆水难收123

爱覆水难收123

2016-02-19 17:47

今天图老师小编要跟大家分享Delphi技巧点滴,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

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

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

  常量 按键名称

  VK_INSERT znsert键

  VK_NUMLOCK Num Lock键

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  VK_CAPITAL Caps Lock键

  VK_SCROLL Scroll Lock键

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

  

procedure TForm1.Timer1Timer(Sender: TObject);var ks:tkeyboardstate;begingetkeyboardstate(ks);//检测键盘函数if odd(ks[VK_NUMLOCK]) thenstatusbar1.panels.items[0].text:=NUMelsestatusbar1.panels.items[0].text:=;if odd(ks[VK_INSERT]) thenstatusbar1.panels.items[1].text:=INSERTelsestatusbar1.panels.items[1].text:=;if odd(ks[VK_CAPITAL]) thenstatusbar1.panels.items[2].text:=CAPITALelsestatusbar1.panels.items[2].text:= ;if odd(ks[VK_SCROLL]) thenstatusbar1.panels.items[3].text:=SCROLLelsestatusbar1.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的任务条

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

  

procedure hideTaskbar;//隐藏var wndHandle : THandle;wnd ss : array[0..50] of Char;beginStrPCopy(@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;beginStrPCopy(@wndClass[0], Shell_TrayWnd);wndHandle := FindWindow(@wndClass[0], nil);ShowWindow(wndHandle, SW_RESTORE);end;end;

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

  有时需要让Windows在启动时自动运行你的程序,如何在程序中实现呢?

  使用Regedit查找HKEY_LOCALMACHINESodtware

  MicrosoftWindowsCurrentVersionRun,你会发现所有的Windows启动时调用的程序都在这里,于是你将你的程序增加在这里就可以了。名称为你的程序的标题,其值为你的程序的执行路径和文件名称。

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

  

User Registry;      Var RegF:TRegistry;      begin       RegF:=TRegistry.Create;       RegF.RootKey:=HKEY_LOCAL_MACHINE;      try       RegF.OpenKey(SOFTWAREMicrosoftWindowsCurrentVersionRun,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);beginif Table1.FieldByName(Population).AsInteger  20000000 thenStringGrid1.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:wangtemp, c:wangtmp);

  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;vardwTemp1,dwTemp2:DWord;beginGetVolumeInformation(PChar(cDriveName+:l), Nil,0,Result, dwTemp2,dwTemp2,Nil,0);end;

  9.防止Win95显示严重错误

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

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

  

wOldErrorMode:=SetErrorMode(SEM_FAILCR-ITICALERRORS);try{此处填写程序主体部分}finallySetErrorMode(wOldErrorMode);

  10.临时路径

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

  

var TempPath:pchar;beginGetTempPath(20,TempPath);//返回路径名edit1.text := TempPath;end;

  11.实现打开文件

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

  

procedure URLink(URL:PChar);beginShellExecute(0, nil, URL, nil, nil, SW_NORMAL);end;

  在要调用的地方使用

  URLink(Readme.txt);

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

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

  12.检测驱动器类型

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

  

var x:integer;driver:pchar;begindriver:=f:;x := GetDriveType(driver);Case x of2: Label1.Caption :=该驱动器是可移动驱动器;3: Label1.Caption := 该驱动器是固定驱动器;4: Label1.Caption := 该驱动器是网络驱动器;5: Label1.Caption := 该驱动器是CD-ROM驱动器;6: Label1.Caption := 该驱动器是虚拟驱动器;Else Label1.Caption := 该驱动器无效;End;end;

  13.驱动器容量

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

  

vardriver:pchar;sec1, byt1, cl1, cl2:longword;begindriver:=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;

展开更多 50%)
分享

猜你喜欢

Delphi技巧点滴

编程语言 网络编程
Delphi技巧点滴

Delphi入门点点滴滴

编程语言 网络编程
Delphi入门点点滴滴

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DELPHI技巧

编程语言 网络编程
DELPHI技巧

DELPHI基础开发技巧

编程语言 网络编程
DELPHI基础开发技巧

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL 使用点滴

编程语言 网络编程
MySQL 使用点滴

delphi小技巧集锦

编程语言 网络编程
delphi小技巧集锦

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

区别不同浏览器CSS hack写法

区别不同浏览器CSS hack写法

留了青山在 还是没柴烧 - QQ伤感分组

留了青山在 还是没柴烧 - QQ伤感分组
下拉加载更多内容 ↓