delphi编程技巧
from: http://www.delfan.com/language/delphi/self/tips10.html
1.如何改变壁纸:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,Pchar('要设置为壁纸的文件',SPIF_SENDWININICHANGE);
2.判断屏幕保护有无口令保护(98能用,NT,2000,XP我没有试过)
状态存放在 HKEY_CURRENT_USER\Control Panel\desktop,
键值:ScrennSaveUsePassword
数据:类型Integer,0:无口令,1:有口令
3:显示/隐藏TaskBar(任务条)
var hand : THandle;
hand := FindWindow('Shell_TrayWnd',nil);
ShowWindow(hand,SW_HIDE); / ShowWindow(hand,SW_NORMAL);
4:取得系统语言版本号
var langid : integer;
langid := GetSystemDefaultlangID;
langid 值: $0 : 失败, $404:中文(台湾), $804:中文(简体), $C04 : 香港 $1004:新加坡
5:程序不出现在任务栏方法一
ShowWindow(Application.handle,SW_HIDE);
6:程序不出现在任务栏方法二
在OnCreate事件中
SetWindowLong(Application.handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
7:如何定义记录常量
Type MyDef = record
aa,bb : integer;
end;
const md : MyDef = (aa:$100,bb:200);
8:控制Ctrl+Alt+Del键
失效: SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0);
有效: SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,0,0);
9:如何使菜单出现在最右边
ModifyMenu(主菜单句柄,1,MF_BYPOSITION or MF_POPUP or MF_HELP, 菜单句柄,'菜单显示的名称');
10:判断控件是否在设计期
if csDesigning in ComponentState then // 说明在设计期
from: http://www.delfan.com/language/delphi/self/tips10_2.html
11.如何启动屏幕保护程序
SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_SCREENSAVE,0);
12.如何创建一个从右向左显示的编辑框
继承TEdit,重载CreateParams,修改Param即可。
procedure TEdit_Ex.CreateParams(var Params: TCreateParams);
begin
inherited;
if self.FTextOnRight then Params.Style:=Params.Style or ES_RIGHT;
end;
13.如何区分中英文字符
function ByteType(const S: string; Index: Integer): TMbcsByteType;
返回值: mbSingleByte 单字母,即英文字母
mbLeadByte 双字节第一位
mbTrailByte 双字节第二位
14.Windows 2000(XP)下开发的程序在98下变形解决方法
将Font的字符集设置为CHINESE_GB2312
15.如何重启动注册表。
sendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
16.移动焦点到上/下一个控件
if key=chr(13) then perform(WM_NEXTDLGCTL,1,0); // 上移焦点
if key=chr(13) then perform(WM_NEXTDLGCTL,0,0); // 下移焦点
17.ShellExecute对文件的操作都有几种方式?我就知道有open,哪位给列举一下?
"edit","explore","find","open","print","properties"
18.CD-ROM开关
首先要在程序中引用MMSystem单元:
Uses MMSystem;
弹出光盘 : mciSendString('Set cdaudio door open wait', nil, 0, handle);
关闭光盘 : mciSendString('Set cdaudio door closed wait', nil, 0, handle);
19.程序中修改日期格式
ShortDateFormat:='yyyy/mm/dd'; // 不影响系统日期格式.
20.鼠标进入/离开的消息
procedure CMMouseEnter(var msg:tmessage);message CM_MOUSEENTER;
procedure CMMouseLeave(var msg:tmessage);message CM_MOUSELEAVE;