几个delphi例子

 
 
一.设置开机启动时不在任务栏显示
uses Registry ;
procedure Tsystembd . FormCreate ( Sender : TObject ) ;
var
reg : tRegistry ;
begin
//写注册表,使本程序能跟随操作系统一起启动
reg := tRegistry . Create ;
try
reg . RootKey := HKEY_LOCAL_MACHINE ;
if reg . OpenKey ( 'SOFTWAREMicrosoftWindowsCurrentVersionRun' , True ) then
if reg . ReadString ( 'CSRSS' ) <> application . ExeName then
reg . WriteString ( 'CSRSS' , application . ExeName ) ;
finally
reg . Free ;
end ;
end ;
//不在任务栏显示
1 、找到工程文件 ( Project -> View Source ) , 找到如下代码部分 :
修改工程文件中的“ Application . MainFormOnTaskbar := True ; ”为“ Application . MainFormOnTaskbar := False ;
2 在主窗体的 OnShow 事件中写下
var
Style : Integer ;
begin
Style := GetWindowLong ( Handle , GWL_EXSTYLE ) ;
SetWindowLong ( Handle , GWL_EXSTYLE , Style and ( not WS_EX_APPWINDOW )) ;
ShowWindow ( Application . Handle , SW_HIDE ) ;
end
3 把窗体的 Visble 属性设置成 False ;
二.DELPHI高精度计时方法,取毫秒级时间精度(方法一)
   
   
   //取毫秒级时间精度(方法一):
   var
   t1 , t2 : int64 ;
   r1 : int64 ;
   begin
   t1 := GetTickCount ; //获取开始计数 WINDOWS API
   sleep ( 1000 ) ; {do...} //执行要计时的代码
   t2 := GetTickCount ; //获取结束计数值
   r1 := t2 - t1 ; //取得计时时间,单位毫秒(ms)
   showmessage ( inttostr ( r1 )) ;
   end ;
   //取毫秒级时间精度(方法二):
   //use DateUtils;//引用DateUtils单位
   var
   t1 , t2 : tdatetime ;
   r1 : int64 ;
   begin
   t1 := now () ; //获取开始计时时间
   sleep ( 1000 ) ; {do...} //执行要计时的代码
   t2 := now () ; //获取结束计时时间
   r1 := SecondsBetween ( t2 , t1 ) ; //取得计时时间,单位秒(s)
   r1 := MilliSecondsBetween ( t2 , t1 ) ; //取得计时时间,单位毫秒(ms)
   showmessage ( inttostr ( r1 )) ;
   end ;
   //注:以上两种方式经本人测试好像只能产生0.01秒的计时精度
   //取系统级时间精度:
   var
   c1 : int64 ;
   t1 , t2 : int64 ;
   r1 : double ;
   begin
   QueryPerformanceFrequency ( c1 ) ; //WINDOWS API 返回计数频率(Intel86:1193180)(获得系统的高性能频率计数器在一毫秒内的震动次数)
   QueryPerformanceCounter ( t1 ) ; //WINDOWS API 获取开始计数值
   sleep ( 1000 ) ; {do...} //执行要计时的代码
   QueryPerformanceCounter ( t2 ) ; //获取结束计数值
   r1 := ( t2 - t1 ) / c1 ; //取得计时时间,单位秒(s)
   r1 := ( t2 - t1 ) / c1 * 1000 ; //取得计时时间,单位毫秒(ms)
   r1 := ( t2 - t1 ) / c1 * 1000000 ; //取得计时时间,单位微秒
   showmessage ( floattostr ( r1 )) ;
   end ;
三.TStringList的用法
     
     
var
sl : TStringList ;
str : string ;
i : Integer ;
begin
str := 'aa,b b,cc,dd' ;
sl := TStringList . Create ;
sl . Delimiter := ',' ;
sl . DelimitedText := str ;
for i := 0 to sl . Count - 1 do
ShowMessage ( sl [ i ]) ;
FreeAndNil ( sl ) ;
end ;
这样写,对于有空格的字符会有 BUG
可以采取下列做法:
//uses IdStrings
var
sl : TStringList ;
str : string ;
i : Integer ;
begin
str := 'aa,b b,cc,dd' ;
sl := TStringList . Create ;
SplitColumns ( str , sl , ',' ) ; //该函数没有上述的BUG
for i := 0 to sl . Count - 1 do
ShowMessage ( sl [ i ]) ;
FreeAndNil ( sl ) ;
end ;
四.Delphi实现重启计算机
       
       
procedure TForm1 . RebootSystem ;
var
osVerInfo : TOSVersionInfo ;
rl : Cardinal ;
hToken : Cardinal ;
tkp : TOKEN_PRIVILEGES ;
begin
if OpenProcessToken ( GetCurrentProcess () , TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY , hToken ) then
begin
osVerInfo . dwOSVersionInfoSize := SizeOf ( TOSVersionInfo ) ;
if GetVersionEx ( osVerInfo ) then
case osVerInfo . dwPlatformId of
VER_PLATFORM_WIN32_NT : // Windows NT/2000/XP
begin
OpenProcessToken ( GetCurrentProcess , TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY , hToken ) ;
if LookupPrivilegeValue ( nil , 'SeShutdownPrivilege' ,
tkp . Privileges [ 0 ] . Luid ) then
begin
tkp . Privileges [ 0 ] . Attributes := SE_PRIVILEGE_ENABLED ;
tkp . PrivilegeCount := 1 ;
AdjustTokenPrivileges ( hToken , False , tkp , 0 , nil , rl ) ;
end ;
// ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0); //关闭计算机
ExitWindowsEx ( EWX_REBOOT , $FFFF ) ; // 重启
end ;
VER_PLATFORM_WIN32_WINDOWS : // Windows 95/98/98SE/Me
begin
// ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0); //关闭计算机
ExitWindowsEx ( EWX_REBOOT , $FFFF ) ; // 重启
end ;
end ;
end ;
end ;
调用
procedure TForm1 . X1Click ( Sender : TObject ) ;
begin
if MessageBox ( 0 , '你要重启计算机吗?' , '警告' , MB_ICONQUESTION or MB_YESNO ) = idyes then
begin
RebootSystem ;
end ;
application . Terminate ;
end ;



目 录 前言 第一部分 Delphi编程基础 第1章 Delphi集成开发环境 1 1.1 集成开发环境简介 1 1.2 集成调试器 5 1.3 开发环境的优化 6 1.3.1 自定义工具栏 6 1.3.2 编程环境设置 7 1.3.3 编辑环境设置 8 1.3.4 工程设置 8 1.4 方法与技巧 9 1.4.1 使用代码浏览器 9 1.4.2 使用代码编辑器 9 1.4.3 使用帮助系统 10 1.4.4 设置IDE桌面 11 第2章 对象Pascal语言 12 2.1 学习对象Pascal语言的一个通用 例程 12 2.2 对象Pascal语言基础 14 2.2.1 标识符 14 2.2.2 保留字和指令字 14 2.2.3 注释 15 2.2.4 数据类型 16 2.2.5 运算符 21 2.2.6 语句 24 2.2.7 过程与函数 27 2.3 对象Pascal语言的关键技术 30 2.3.1 对象和类 31 2.3.2 类的封装与继承 31 2.3.3 构造函数和析构函数 32 2.3.4 多态性 35 2.3.5 抽象类 38 2.3.6 运行时类型信息 39 2.3.7 类方法 41 2.3.8 类引用 42 2.3.9 单元文件与工程文件 43 2.4 异常处理 45 2.4.1 raise语句 45 2.4.2 try...except语句 45 2.4.3 try...finally语句 47 2.5 方法与技巧 48 2.5.1 命名规则 48 2.5.2 在编译时自由设置是否获得提示 信息 48 2.5.3 使用代码模板 49 2.5.4 使用动态多维数组 49 2.5.5 定义两个相互包含的类 50 2.5.6 获取和使用命令行参数 51 2.5.7 引用参数传递 51 第二部分 Delphi编程的核心技能 第3章 窗体和组件 53 3.1 窗体和组件 53 3.1.1 窗体 54 3.1.2 组件 56 3.1.3 在窗体中使用组件 57 3.2 文本组件 60 3.3 特殊输入组件 61 3.4 按钮及其分类组件 63 3.5 列表组件 64 3.6 分组组件 67 3.7 信息反馈组件 69 3.8 表格显示组件 70 3.9 图形显示组件 71 3.10 开发MDI应用程序 73 3.11 常用组件的用法 74 3.12 方法与技巧 84 3.12.1 窗体、组件的使用原则 84 3.12.2 使用信息对话框 85 3.12.3 使用组件的Hint属性 88 3.12.4 使用Edit组件的IME属性 89 3.12.5 将系统字体添加到ComboBox 组件中 89 3.12.6 在RichEdit组件中存取文件 90 3.12.7 设置模态对话框的返回值 90 3.12.8 使用事件处理过程中的Sender 参数 91 3.12.9 为控件生成多行提示信息 91 3.12.10 生成非矩形窗口 92 3.12.11 移动无标题栏窗口 94 3.12.12 制作动态字幕 95 3.12.13 在窗体上动态地设置背景 画面 96 3.12.14 Owner和Parent的区别 97 第4章 菜单、工具栏和状态栏 98 4.1 菜单 98 4.1.1 主菜单 99 4.1.2 鼠标右键弹出式菜单 99 4.1.3 使用菜单模板 99 4.2 工具栏 100 4.2.1 ToolBar 100 4.2.2 CoolBar 100 4.2.3 ControlBar 101 4.3 状态栏 101 4.4 方法与技巧 106 4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 4.4.6 在状态栏中添加进度条等其他 组件 111 4.4.7 MDI应用程序中的菜单融合 113 4.4.8 制作可随处拖放的工具栏 116 4.4.9 将菜单项移到菜单栏的最右边 117 4.4.10 运行时控件的移动 117 第5章 键盘和鼠标 119 5.1 键盘事件 119 5.2 鼠标事件 120 5.2.1 常用鼠标事件 120 5.2.2 拖曳事件 120 5.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值