Delphi使用技巧ABC
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;
B如何分行提示
Delphi中大部分控件都有一个实用的Hint属性,即浮动条提示。但有时提示较长,是否可以使得浮动提示条分行显示呢?其实,Hint是一个字符串(string),因而Delphi显示该字符串时会自动解释其中的回车控制符,所以只要加上回车控制符就可以了。依此原理,我们还能做出别具一格的垂直提示条。请先在form1中布置一个label,然后看示例代码:
procedure TForm1.FormCreate(Sender: TObject);
begin label1.Hint := ′垂′ + #13 + ′直′+ #13 + ′提′ + #13 + ′示′;
end;
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过大,只有左上角被显示。