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;
   至此,这样延时启动屏制作完成。