Delphi使用技巧ABC

Author: 汪箴 Date: 1998年 第22期 13版

#1  A.如何屏蔽系统功能键
  有时我们不希望程序被用户用Alt+Tab、Ctrl+Alt+Del、Ctrl+Esc等系统功能键打断(比如自动演示程序),那么该怎么做呢?提示你一点,在运行屏幕保护程序的时候,这些功能键都是不起作用的——也就是说,只要在你的程序运行过程中,“欺骗”一下Windows,使它自以为正处在屏幕保护状态就成了!请看下面这段代码:
  var
  temp : integer;
  begin
    SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
  end;
      当然,在程序结尾处千万别忘了恢复设置,把Windows“唤醒”。代码如下:
  var
  temp : integer;
  begin
    SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @temp, 0);
  end;
#1  B.如何分行提示
  Delphi中大部分控件都有一个实用的Hint属性,即浮动条提示。但有时提示较长,是否可以使得浮动提示条分行显示呢?其实,Hint是一个字符串(string),因而Delphi显示该字符串时会自动解释其中的回车控制符,所以只要加上回车控制符就可以了。依此原理,我们还能做出别具一格的垂直提示条。请先在form1中布置一个label,然后看示例代码:
     procedure TForm1.FormCreate(Sender: TObject);
  begin  label1.Hint := ′垂′ + #13 + ′直′+ #13 + ′提′ + #13 + ′示′;
  end;  
#1  C.如何在菜单中显示图片
  用过Office97吗?是不是觉得在菜单中显示图标很新鲜?如果想让你的程序也能如此锦上添花,那就请你赶快准备bmp吧!
  假设你打算为“文件”菜单栏(name为n1)下的第9项(序号改为8)“打印”添加一个打印机图标(文件名为c:\inter.bmp),那只要在form的OnCreate事件中这样编写:
  var
     Bmp : TPicture;
  begin
  Bmp := TPicture.Create;
  Bmp.LoadFromFile(′c:\printer.bmp′);
  SetMenuItemBitmaps(n1.Handle,8,  MF_BYPOSITION,Bmp. Bitmap. Handle,                            Bmp.Bitmap.Handle);
  end;
  其中,第一个bitmap.handle用于未选定菜单项(unchecked),第二个则指定了选定(checked)时所显示的bitmap,同异皆可。另外,由于菜单项的高度有限,所以,若bitmap过大,只有左上角被显示。