Delphi编程技巧四则

Author: 罗林hushibo Date: 2001年 12期

#1    一、 检查计算机的网络连接情况
      这可以利用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;
      至此,这样延时启动屏制作完成。