⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tip15.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<style>
<!--
A{text-transform: none; text-decoration: none;}
A:hover {color: #F77C02 ; text-decoration: underline;}  }
-->
</style>
<style type="text/css">
<!--
.font1 {font-size:10.5pt; line-height:15pt; align=center}
.font2 {font-size:9pt; line-height:13pt; }
A{text-transform: none; text-decoration:none;color:#0000FF}
a:hover {text-decoration:underline;color:#FFFFF}
-->

</style>
<title>DELPHI技巧15则</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p> </p>

<p align="center"><a name="屏蔽系统功能键"><span class="font2"><strong>屏蔽系统功能键</strong></span></a></p>

<p align="left"><span class="font2">  当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码:<br>
Var<br>
temp:integer;<br>
begin<br>
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);<br>
end;<br>
  当你要恢复功能键时用以下代码:<br>
Var<br>
Temp:integer;<br>
begin<br>
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);<br>
end;<br>
</span></p>

<hr>

<p align="center"><a name="查阅可视窗口标题"><span class="font2"><strong>查阅可视窗口标题</strong></span></a></p>

<p><span class="font2">下面只是举出一个例子提供参考:<br>
运用API函数GetWindow()配合GetWindowText()逐一查出各视窗的标题<br>
1. File | New Project 开始一个新的工程<br>
2. 在 Form1 中安排 Button 与 Memo 各一<br>
3. 在 Button1 的 OnClick 事件中撰写程式如下:<br>
procedure TForm1.Button1Click(Sender: TObject);<br>
var<br>
 hCurrentWindow: HWnd;<br>
 szText: array[0..254] of char;<br>
begin<br>
 hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);<br>
 while hCurrentWindow &lt;&gt; 0 do<br>
 begin<br>
 if GetWindowText(hCurrentWindow, @szText, 255)&gt;0 then<br>
 Memo1.Lines.Add(StrPas(@szText));<br>
 hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);<br>
 end;<br>
end; <br>
</span></p>

<hr>

<p> </p>

<p align="center"><a name="返回程序执行参数"><span class="font2"><strong>返回程序执行参数</strong></span></a></p>

<p align="left"><span class="font2">  有关 Delphi 
传入应用程式的命令列参数, 请参考以下的说明:<br>
用ParamCount函数取得命令参数的个数: <br>
呼叫 ParamStr(0), 传回执行档的档名(含路径)<br>
呼叫 ParamStr(n), 传回第n个参数的内容<br>
procedure TForm1.FormCreate(Sender: TObject);<br>
var<br>
sFileName: string;<br>
begin<br>
if ParamCount &gt; 0 then begin (* 有执行参数传入 *)<br>
sFileName := ParamStr(1); (* 取得参数内容 *)<br>
if FileExists(sFileName) then<br>
Memo1.Lines.LoadFromFile(sFileName)<br>
else<br>
Application.MessageBox('找不到指定的档案', '讯息', 48);<br>
end;<br>
end;<br>
</span></p>

<hr>

<p align="center"><a name="转让控制权"><span class="font2"><strong>转让控制权</strong></span></a></p>

<p align="left"><span class="font2">  有时由于长时间的循环语句占用了cpu的处理权,无法运行 
其他程序,照成死循环。这时用以下命令转让控制权,让操作系统处理其他事件。<br>
Application.ProcessMessages;</span></p>

<p align="left"><span class="font2">相当于VB的Do events.<br>
</span></p>

<hr>

<p align="center"><a name="关闭Windows"><span class="font2"><strong>关闭Windows</strong></span></a></p>

<p align="left"><span class="font2">控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, 
ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数<br>
首先定义常数<br>
const<br>
EWX_FORCE=4; //关闭所有程序并以其他用户身份登录<br>
EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式<br>
EWX_REBOOT=2; //重新启动计算机<br>
EWX_SHUTDOWN=1;//关闭计算机<br>
运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句<br>
ExitWindowsEx(How,0);<br>
</span></p>

<hr>

<p> </p>

<p align="center"><a name="检测磁盘是否变化"><span class="font2"><strong>检测磁盘是否变化</strong></span></a></p>

<p align="left"><span class="font2">  最简单的检查CD-ROM或是磁盘是否有过变化的方法 
是检查其volume号码。你可以简单地运用下面的函数来返 回磁盘的volume系列号码GetDiskVolSerialID('E'), 
函数代码如下:<br>
function GetDiskVolSerialID(cDriveName:char):DWord;<br>
var<br>
dwTemp1,dwTemp2:DWord;<br>
begin<br>
GetVolumeInformation(PChar(cDriveName+':l'), Nil,0,Result, dwTemp2,dwTemp2,Nil,0);<br>
end;<br>
</span></p>

<hr>

<p align="center"><a name="鼠标击了哪一个对象"><span class="font2"><strong>鼠标击了哪一个对象</strong></span></a></p>

<p align="left"><span class="font2">  在Win95中,鼠标的右键起到了很大的作用,但是,由于历史的原因,对于右键的使用即使在Delphi中,也还不够有效,下面的程序可以告诉你如何知道刚才鼠标右击的对象名称。首先建立一个popmenu,然后以下的代码就可以告诉你刚才右击的对象名称:<br>
PopupMenu1.PopupComponent.ClassName<br>
</span></p>

<p align="left"> </p>

<hr>

<p align="center"><a name="控制INI文件几法"><span class="font2"><strong>控制INI文件几法</strong></span></a></p>

<p align="left"><span class="font2">要利用.INI文件做程序有关数据的存储工作,就需要能读和写.INI文件,所以列了如下方法给大家参考:<br>
从.INI文件中获取字符串<br>
var<br>
strResult:pchar;<br>
begin<br>
GetPrivateProfileString(<br>
'windows', // []中标题的名字<br>
'NullPort', // =号前的名字<br>
'NIL', // 如果没有找到字符串时,返回的默认值<br>
strResult, //存放取得字符<br>
100, //取得字符的允许最大长度<br>
'c:\forwin95\win.ini' // 调用的文件名<br>
);<br>
edit1.text:=strResult; //显示取得字符串<br>
从.INI文件中获取整数<br>
edit1.text:=inttostr(GetPrivateProfileInt(<br>
'intl', // []中标题的名字<br>
'iCountry', // =号前的名字<br>
0,// 如果没有找到整数时,返回的默认值<br>
'c:\forwin95\win.ini' // 调用的文件名<br>
));<br>
向.INI文件写入字符串<br>
WritePrivateProfileString(<br>
'windows', // []中标题的名字<br>
'load', // 要写入“=”号前的字符串<br>
'accca', //要写入的数据<br>
'c:\forwin95\win.ini' // 调用的文件名<br>
);<br>
向.INI文件写入整数<br>
WritePrivateProfileSection(<br>
'windows', // []中标题的名字<br>
'read=100', // 要写入的数据<br>
'c:\forwin95\win.ini' // 调用的文件名<br>
);<br>
上面的方法是调用API函数,下面介绍另一种不用API从.INI文件中获取字符的方法<br>
var MyIni: TIniFile;<br>
begin<br>
MyIni := TIniFile.Create('WIN.INI');//调用的文件名<br>
edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');//取得字符<br>
end;<br>
向.INI文件中写入字符的方法<br>
var MyIni: TIniFile;<br>
begin<br>
MyIni := TIniFile.Create('WIN.INI');//调用的文件名<br>
DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:\a.bmp');<br>
end;<br>
</span></p>

<p align="left"> </p>

<hr>

<p align="center"><a name="防止Win95显示严重错误"><span class="font2"><strong>防止Win95显示严重错误</strong></span></a></p>

<p align="left"><span class="font2">  不管你的程序如何反复调试,交给用户之后,总有可能发生你意想不到的错误,如何避免Win95显示出白色的窗口,告诉你的用户发生了难堪的意外错误呢?我们可以这样做:<br>
var<br>
wOldErrorMode:Word;<br>
begin<br>
wOldErrorMode:=SetErrorMode(SEM_FAILCRITICALERRORS);<br>
try<br>
finally<br>
SetErrorMode(wOldErrorMode);<br>
end;<br>
end;<br>
</span></p>

<p align="left"> </p>

<hr>

<p align="center"><a name="状态条插入可视控件"><span class="font2"><strong>状态条插入可视控件</strong></span></a></p>

<p align="left"><span class="font2">  首先,在FROM中放置一个状态条控件Status。调节Status.Panels,在其中插入3个状态条嵌板。把第二个嵌板的参数Style设置成psOwnerDraw。这一点很重要,如果没有这样做,将永远无法显示文字以外的东西。然后在状态条的OnDrawPanel事件中插入一行StatusDrawRect:=rect;以记录参数Style设置成psOwnerDraw的嵌板的坐标。<br>
  第二步,在FROM的Private中申明一个TProgressBar类型的变量Progress。然后在一个菜单的消息响应过程中调用Create方法把它建立起来,再设定状态条为该进程条的父窗口,进而设定进程条的一些必要参数。例如:最大值、最小值、原点坐标、高度和宽度等。<br>
  最后编译一下该程序,你就会发现在状态条中被插入了一个运动着的进程条。<br>
  类似地,你还可以在状态条中插入其他可视控件,如:按键、位图和动画控件等等。<br>
以下是范例程序:<br>
type<br>
TForm1 = class(TForm)//定义一个窗口类<br>
Status: TStatusBar;<br>
MainMenu1: TMainMenu;<br>
file1: TMenuItem;<br>
insertprocressbar1: TMenuItem;<br>
N1: TMenuItem;<br>
exit1: TMenuItem;<br>
procedure FormCreate(Sender: TObject);<br>
procedure StatusDrawPanel(StatusBar: TStatusBar; Panel: <br>
TStatusPanel;const Rect: TRect);<br>
procedure FormDestroy(Sender: TObject);<br>
procedure exit1Click(Sender: TObject);<br>
procedure insertprocressbar1Click(Sender: TObject);<br>
private<br>
colorindex : integer; BookOpen:Boolean;<br>
ssbmp:Tbitmap; progress:TProgressbar;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -