Delphi编程技巧四则
这可以利用Win32 API中的检索系统度量及配置设定函数GetSystemMetrics来实现。这个函数的定义为int GetSystemMetrics(nIndex),其中nIndex为待检索的系统度量及配置设定值,SM_NETWORK标志位值为1,则计算机连接了网络,值为0,则计算机尚未连接网络。
procedure TForm1.Button1Click(Sender: TObject);??
begin
if GetSystemMetrics(SM_NETWORK) AND $01 = $01 then
ShowMessage('连上了网络')??
else
ShowMessage('尚未连接网络');?牔?
end;
#1 二、收发电子邮件
在程序的About对话框中,程序员经常提供E-mail服务以提供程序应用反馈或技术支持等,在Delphi程序中可以用ShellExecute函数实现利用默认电子邮件程序发送邮件的功能。
procedure TForm1.EmailLabel1Click(Sender: TObject);?牔?
Var
EMailaddress,SubjectS,ContentS,MailS:String;??
BEGIN
EMailaddress:='hll_hb@sina.com';??
//如果想发E-mail给多个邮件地址,则各邮件地址之间可用分号分割。例如://hll_hb@sina.com;kk_bj@163.net
SubjectS:='Message Subject';
ConentS:= '这是一个Hello邮件';??
MailS:='mailto:' + EMailaddress + '?subject=' + SubjectS + '&body='+ContentS
ShellExecute(0,'open',PChar(MailS),“,”,SW_SHOWNORMAL);?牔?
end;
#1 三、利用OLE自动化控制Ms Excel
Ms Excel的制表计算功能十分强大,我们在编程时有时需要操纵Ms Excel,这时可利用OLE自动化。如下的代码段实现这个功能。
procedure TForm1.Button1Click(Sender:TObject);?牔?
var
Oe: OleVariant;??
begin
try
Oe:= GetActiveOleObject('Excel.Application');?牔?
except
Oe:= CreateOleObject('Excel.Application');??
end??
Oe.visible:=true;??
Oe.WorkBooks.Add;
Oe.Worksheets['Sheet1'].Cells[10,10].Value:= 99;??
Oe.Worksheets['Sheet1'].Cells[10,10].Font.Size:= 12;??
Oe.Range?焄'A1,C6'].FormulaR1C1 := '123';??
Oe.quit;
end.
以上程序均在Windows 98、Delphi5.0下编译运行通过。
#1 四、制作启动屏
(一)新建一个工程,增加一个窗体,名称为frmSplash。保存单元的名SPLASH.PAS。设窗体的BorderStyle为bsNone。在窗体上加TPanel,设其Align 属性为alAlignClient。在窗体上加TImage,设其Align 属性为 alAlignClient,并装入图片。
(二)修改工程文件源代码为??
program Project1;??
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Splash in 'Splash.pas' {frmSplash};??
{$R *.RES}
begin
try
frmSplash:= TfrmSplash.Create(Application);??
frmSplash.Show;
frmSplash.Update;??
Application.Initialize;
Application.CreateForm(TForm1, Form1);?牔?
frmSplash.Close;
finally
frmSplash.Free;
end;
Application.Run;??
end.
(三)另外,若要做延时启动屏,则可做如下修改:
1.在窗体frmSplash上加timer控件,设interval属性为1000∽5000(随意),Enable:=True。
2.Timer的OnTimer事件增加如下代码:
Timer1.Enabled := False;
3.在frmSplash窗体的OnCloseQuery 事件增加如下代码:??
procedure TfrmSplash.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);?牔?
begin
CanClose:= Not Timer1.Enabled;
end;
4.在工程的frmSplash.Close 命令前增加如下代码:??
repeat
Application.ProcessMessages;
until frmSplash.CloseQuery;
至此,这样延时启动屏制作完成。