现在的位置: 首页 > 综合 > 正文

几个Delphi技巧

2013年01月25日 ⁄ 综合 ⁄ 共 1329字 ⁄ 字号 评论关闭

几个Delphi小技巧

1、判断Num Lock、Caps Lock、Scroll Lock指示灯状态

  以Num Lock为例:
  function IsNumLockOn() : boolean;
  begin
    Result := (GetKeyState(VK_NUMLOCK) and $01) <> 0;
  end;

  如果灯亮则返回True,不亮返回False。
  VK_NUMLOCK 替换成 VK_CAPITAL 或 SCROLL  则可以判断Caps Lock 或 Scroll Lock指示灯的状态。

2、更改ComboBox组件的下拉框的宽度

  ComboBox下拉框的宽度默认是与ComboBox的宽度(Width)相同的,所以如果ComboBox的Item内容长度比较长时,下拉框就显示不了。这时可以用代码更改下拉框的宽度,以显示完整内容:

  ComboBox1.Perform(CB_SETDROPPEDWIDTH, 600, 0);

  “600”表示新的宽度,可以根据需要修改。

3、激活当前的屏幕保护程序

  PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0);

4、打开Windows查找对话框(需添加ShellAPI单元)

  ShellExecute(
      handle,
      'find', 
      'c:/windows', // 开始搜索的目录
      '', 
      '',
      SW_SHOW
     );

5、判断系统是否是使用大字体。如果用户设置显示效果是大字体,将会严重影响软件界面的显示。

  if Screen.PixelsPerInch = 96 then
  ;// 正常字体;

  if Screen.PixelsPerInch = 120 then
  ;// 大字体;

6、取消默认的Beep。Delphi的TEdit组件中用户按下回车键后,PC扬声器都会Beep一声。下面的代码用于取消这一声:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then key := #0;
end;

7、判断外部应用程序是否停止响应

procedure TForm1.Button1Click(Sender: TObject);
var
 H : THandle;
 lngReturnValue : longint;
 DWResult : DWORD;
begin
 H := FindWindow('Notepad', nil);  //要判断的程序
 if H > 0 then
  begin
    lngReturnValue := SendMessageTimeout(H, WM_NULL, 0,
      0, SMTO_ABORTIFHUNG And SMTO_BLOCK, 1000, DWResult);
    if lngReturnValue > 0 then
     ShowMessage('Responding')
      else
       ShowMessage('Not responding');
  end
   else
     ShowMessage('Application not found');
end;

抱歉!评论已关闭.