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

📄 00502.htm

📁 提供了Delphi编程的几个巧妙用法
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>1</title>
</head>

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

<p><span style="BACKGROUND-COLOR: #ff0000"><a href="00502.zip">源程序下载</a></span><b><span style="background-color: #000080"><br>
</span></b><span style="background-color: #000000"><br>
</span><b><span style="background-color: #000080"><a name="1"></a>1:判断系统是否安装了声卡<br>
</span></b><span style="background-color: #000000">   欲判断系统是否安装了声卡,调用Winmm.dll中的waveOutGetNumDevs和midiOutGetNumDevs就可以判断是否安装了声卡。这两个函数在Var部分的说明如下:<br>
  function waveOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'waveOutGetNumDevs';<br>   
  function midiOutGetNumDevs: longint; stdcall; external 'winmm.dll' name 'midiOutGetNumDevs';<br>   
<br>   
//判断声卡是否存在<br>   
Function IsSoundcardInstalled : Boolean ;<br>   
Var<br>   
&nbsp;&nbsp;&nbsp; WaveOutPutDeviceCount: Integer ;<br>   
&nbsp;&nbsp;&nbsp; MidiOutPutDeviceCount : Integer ;<br>   
Begin<br>   
&nbsp;&nbsp;&nbsp; Result := False ;<br>   
&nbsp;&nbsp;&nbsp; WaveOutPutDeviceCount := waveOutGetNumDevs ;<br>   
&nbsp;&nbsp;&nbsp; MidiOutPutDeviceCount := midiOutGetNumDevs ;<br>   
&nbsp;&nbsp;&nbsp; if (WaveOutPutDeviceCount>0) and (MidiOutPutDeviceCount>0) Then Result := True<br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
Else Result := False ;<br>   
<br>   
End ;<br>   
<br>   
procedure TForm1.Button1Click(Sender: TObject);<br>   
Begin<br>   
&nbsp;&nbsp;&nbsp; if IsSoundcardInstalled Then ShowMessage('系统已经安装了声卡')<br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
Else ShowMessage('系统没有安装声卡') ;<br>   
<br>   
end;<br>   
<br>   
<br>   
</span><b><span style="background-color: #000080"><a name="2"></a>2:如何把程序关闭的控制权掌握在自己手里<br> 
</span></b><span style="background-color: #000000">  在一般的应用程序中,按Alt+F4就可以关闭或者在系统菜单里面,选择了关闭这个菜单项,就可以关闭当前的应用程序,如何屏蔽掉系统的菜单的关闭功能(Alt+F4)失效呢,实现的方法很简单,就是当当前的应用程序收到关闭消息时,把CanClose:=FALSE;&nbsp;<br>
在本程序中,设置一个全局变量bClose,用他来控制能否关闭当前应用程序,只有单击Button3时才可以关闭当前的应用程序。<br>
<br>
procedure TForm1.FormCreate(Sender: TObject);<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; bClose := False ;<br>   
end;<br>   
<br>   
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; CanClose := bClose ;<br>   
end;<br>   
<br>   
procedure TForm1.Button3Click(Sender: TObject);<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; bClose := True ;<br>   
&nbsp;&nbsp;&nbsp; Close ;<br>   
end;<br>   
<br>   
<br>   
</span>     
<b><a name="3"><span style="background-color: #000080"></span></a><span style="background-color: #000080">  
3:写一个简单的多线程的程序</span></b><span style="background-color: #000000"><br>  
  使用线程时有两个主要任务:第一,创建线程,第二,创建线程入口函数。Windows API调用CreateThread函数来创建一个线程。&nbsp;<br>  
hthread := CreateThread(nil,         //是安全属性,如果此参数设为Nil,使用的是缺省安全属性,在Windows95/98下,标准的就设为Nil,只有想此线程有子线程时才可能脱离这种模式。<br>   
                        0,           //如果这个参数为0,就是线程的堆栈长度和此应用程序的的堆栈长度相同,可以总把此参数设置为0<br>   
                        @ThreadFunc, //线程开始初的线程名称,<br>   
                        nil,         // argument of thread<br>   
                        0,           // Create flags<br>   
                        ThreadID);   // thread ID<br>   
<br>   
<br>   
function ThreadFunc(P: Pointer): LongInt; stdcall;<br>   
var<br>   
&nbsp;&nbsp;&nbsp; i: Integer;<br>   
&nbsp;&nbsp;&nbsp; DC: HDC;<br>   
&nbsp;&nbsp;&nbsp; S: string;<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; DC := GetDC(Form1.Handle);<br>   
&nbsp;&nbsp;&nbsp; SetBkColor(DC, GetSysColor(color_btnface));<br>   
&nbsp;&nbsp;&nbsp; for i := 0 to 100000 do&nbsp;<br>  
&nbsp;&nbsp;&nbsp; begin<br>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S := IntToStr(i);<br>   
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextOut(DC, 10, 10, PChar(S),   
Length(S));<br>  
&nbsp;&nbsp;&nbsp; end;<br>  
&nbsp;&nbsp;&nbsp; ReleaseDC(Form1.Handle, DC);<br>   
end;<br>   
<br>   
//采用一个多线程<br>   
procedure TForm1.Button4Click(Sender: TObject);<br>   
var<br>   
&nbsp;&nbsp;&nbsp; hThread: THandle;<br>   
&nbsp;&nbsp;&nbsp; ThreadID: DWord;<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; hthread := CreateThread(nil,         //Security attribute<br>   
&nbsp;&nbsp;&nbsp; 0,           //Initial Stack<br>   
&nbsp;&nbsp;&nbsp; @ThreadFunc, //Starting address of thread<br>   
&nbsp;&nbsp;&nbsp; nil,         // argument of thread<br>   
&nbsp;&nbsp;&nbsp; 0,           // Create flags<br>   
&nbsp;&nbsp;&nbsp; ThreadID);   // thread ID<br>   
<br>   
&nbsp;&nbsp;&nbsp; if hthread = 0 then&nbsp; MessageBox(Handle, 'No Thread', nil, MB_OK);<br>   
end;<br>   
<br>   
//采用单线程<br>   
procedure TForm1.Button5Click(Sender: TObject);<br>   
begin<br>   
&nbsp;&nbsp;&nbsp; ThreadFunc(nil);<br>  
end;<br>  
<br>  
</span>     
<span style="background-color: #FF0000"><a href="00502.zip">源程序下载</a></span>     
</p>   
   
</body>     
     
</html>     

⌨️ 快捷键说明

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