发信人: lofe ()感激生活(), 信区: BorlandDev
标  题: 检测磁盘是否变化 (转载)
发信站: 哈工大紫丁香 (2000年09月01日18:52:47 星期五), 站内信件

【 以下文字转载自 VisualProgram 讨论区 】
【 原文由 alias 所发表 】
以简单地运用下面的函数来返 回磁盘的volume系列号码GetDiskVolSerialID('E'), 
函数代码如下: 
function GetDiskVolSerialID(cDriveName:char):DWord; 
var 
dwTemp1,dwTemp2:DWord; 
begin 
GetVolumeInformation(PChar(cDriveName+':l'), Nil,0,Result, dwTemp2,dwTemp2,Nil 
,0); 
end; 
 
                        鼠标击了哪一个对象 
 
  在Win95中,鼠标的右键起到了很大的作用,但是,由于历史的原因,对于右键的 
使用即使在Delphi中,也还不够有效,下面的程序可以告诉你如何知道刚才鼠标右击 
的对象名称。首先建立一个popmenu,然后以下的代码就可以告诉你刚才右击的对象名 
称: 
PopupMenu1.PopupComponent.ClassName 
 
                               控制INI文件 
 
要利用.INI文件做程序有关数据的存储工作,就需要能读和写.INI文件,所以列了如 
下方法给大家参考: 
从.INI文件中获取字符串 
var 
strResult:pchar; 
begin 
GetPrivateProfileString( 
'windows', // []中标题的名字 
'NullPort', // =号前的名字 
'NIL', // 如果没有找到字符串时,返回的默认值 
strResult, //存放取得字符 
100, //取得字符的允许最大长度 
'c:\forwin95\win.ini' // 调用的文件名 
); 
edit1.text:=strResult; //显示取得字符串 
从.INI文件中获取整数 
edit1.text:=inttostr(GetPrivateProfileInt( 
'intl', // []中标题的名字 
'iCountry', // =号前的名字 
0,// 如果没有找到整数时,返回的默认值 
'c:\forwin95\win.ini' // 调用的文件名 
)); 
向.INI文件写入字符串 
WritePrivateProfileString( 
'windows', // []中标题的名字 
'load', // 要写入“=”号前的字符串 
'accca', //要写入的数据 
'c:\forwin95\win.ini' // 调用的文件名 
); 
向.INI文件写入整数 
WritePrivateProfileSection( 
'windows', // []中标题的名字 
'read=100', // 要写入的数据 
'c:\forwin95\win.ini' // 调用的文件名 
); 
 
                      防止Win95显示严重错误 
 
  不管你的程序如何反复调试,交给用户之后,总有可能发生你意想不到的错误, 
如何避免Win95显示出白色的窗口,告诉你的用户发生了难堪的意外错误呢?我们可以 
这样做: 
var 
wOldErrorMode:Word; 
begin 
wOldErrorMode:=SetErrorMode(SEM_FAILCRITICALERRORS); 
try 
finally 
SetErrorMode(wOldErrorMode); 
end; 
end; 
 
                        状态条插入可视控件 
 
  首先,在FROM中放置一个状态条控件Status。调节Status.Panels,在其中插入3个 
状态条嵌板。把第二个嵌板的参数Style设置成psOwnerDraw。这一点很重要,如果没 
有这样做,将永远无法显示文字以外的东西。然后在状态条的OnDrawPanel事件中插入 
一行StatusDrawRect:=rect;以记录参数Style设置成psOwnerDraw的嵌板的坐标。 
  第二步,在FROM的Private中申明一个TProgressBar类型的变量Progress。然后在 
一个菜单的消息响应过程中调用Create方法把它建立起来,再设定状态条为该进程条 
的父窗口,进而设定进程条的一些必要参数。例如:最大值、最小值、原点坐标、高 
度和宽度等。 
  最后编译一下该程序,你就会发现在状态条中被插入了一个运动着的进程条。 
  类似地,你还可以在状态条中插入其他可视控件,如:按键、位图和动画控件等 
等。 
以下是范例程序: 
type 
TForm1 = class(TForm)//定义一个窗口类 
Status: TStatusBar; 
MainMenu1: TMainMenu; 
file1: TMenuItem; 
insertprocressbar1: TMenuItem; 
N1: TMenuItem; 
exit1: TMenuItem; 
procedure FormCreate(Sender: TObject); 
procedure StatusDrawPanel(StatusBar: TStatusBar; Panel:  
TStatusPanel;const Rect: TRect); 
procedure FormDestroy(Sender: TObject); 
procedure exit1Click(Sender: TObject); 
procedure insertprocressbar1Click(Sender: TObject); 
private 
colorindex : integer; BookOpen:Boolean; 
ssbmp:Tbitmap; progress:TProgressbar; 
StatusDrawRect:TRect; //记录要插入状态条特技的坐标范围 
public 
{ Public declarations } 
end;  
 
var 
Form1: TForm1;  
 
implementation  
 
{$R *.DFM}  
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
end;  
 
procedure TForm1.StatusDrawPanel(StatusBar: TStatusBar; 
Panel: TStatusPanel; const Rect: TRect); 
begin 
StatusDrawRect:=rect; //记录要实现状态条特技的坐标范围 
end; 
 
procedure TForm1.exit1Click(Sender: TObject); 
begin 
close; 
end;  
 
procedure TForm1.insertprocressbar1Click(Sender: TObject); 
var i,count:integer; 
staPanleWidth:integer; 
begin 
progress:=TProgressbar.create(form1); 
count:=3000; //进程条的最大值 
staPanleWidth:=status.Panels.Items[2].width;  
//由于进程条的很宽,所以需要改变状态条嵌板的宽度,这里先保存它的宽度。 
status.Panels.Items[2].width:=150; // 改变宽度 
status.repaint; 
with progress do 
begin 
top:=StatusDrawRect.top; 
left:=StatusDrawRect.left; 
width:=StatusDrawRect.right-StatusDrawRect.left; 
height:=StatusDrawRect.bottom-StatusDrawRect.top;  
//设定进程条的宽度和高度 
visible:=true; 
try 
Parent := status; //该进程条的拥有者为状态条status 
Min := 0; Max := Count; //进程条的最大和最小值 
Step := 1; //进程条的步长 
for i := 1 to Count do 
Stepit; // 累加进程条 
ShowMessage('现在,进程条将要从内存中被释放'); 
finally 
Free; //释放进程条 
end; //try 
end; //with 
status.Panels.Items[2].width:=staPanleWidth; //恢复状态条嵌板的宽度 
end; //begin  
 
end.  
 
                                 临时路径 
 
有时需要Windows的临时路径来做备份等工作,那么就要知道路径在哪,下面的程序帮 
你忙: 
var aa:pchar; 
begin 
GetTempPath(20,aa); //返回路径名 
edit1.text:=aa; 

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: mig.bbs@smth.org]
--
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: club.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.854毫秒