ccidnet????

出版日期:2001-10-29 总期号:1067 本年期号:82

本期导读
要闻综合
电脑工作室
渠道与市场
产品与应用
软件与服务
东北专刊
华东专刊
华南专刊
华中专刊
西北专刊
西南专刊
InfoTimes
Delphi编程答疑解惑

金奕

  问:如何实现控件面板的平滑滚动﹖

  答:安装过许多控件的朋友都知道,在众多的控件中选择一个实在不是一件轻松的事,鼠标要不停点击,如果能平滑滚动该多好啊,其实我们也能实现这一想法。

  建立一个文本文件,输入如下内容:

  REGEDIT4

  [hkey_current_user\software\borland\Delphi\5.0\extras]

  "autopaletteselect"="1"

  "autopalettescroll"="1"

  保存该文本文件为tip.reg,然后双击此文件,启动Delphi,看看效果如何。

  问:在Delphi中如何实现TWebbrowser页面打印?

  答:我们可以利用以下代码在Delphi中实现TWebbrowser的页面打印。

  procedure TForm1.Button1Click(Sender: TObject);

  var

   vaIn,

   vaOut: OleVariant;

  Begin

   WebBrowser1.Navigate('http://www.google.com');

   WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);

  end;

  问:如何实现Treeview自动展开并显示节点?

  答:我们可以利用以下代码轻松实现Treeview自动展开并显示所有节点的功能。

  var

   lnNode: TTreeNode;

  begin

   lnNode := TreeView1.Items.GetFirstNode;

   while not (lnNode = nil) do begin

   lnNode.Expand(False);

   lnNode := lnNode.GetNextSibling;

   end;

  end;

  问:在Delphi中如何实现自动隐藏Windows的任务栏?

  答:在Delphi中实现自动隐藏Windows的任务栏的方法是首先在uses中加入ShellAPI,然后在程序中添加如下代码:

  function IsTaskbarAutoHideOn : boolean;

  var

   ABData : TAppBarData;

  begin

   ABData.cbSize := sizeof(ABData);

   Result :=

   (SHAppBarMessage(ABM_GETSTATE, ABData)

   and ABS_AUTOHIDE) > 0;

  end;

  问:Delphi中如何监视光驱中是否有光盘?

  答:我们可以利用以下代码轻松实现此功能。

  procedure Tform1.WMDEVICECHANGE(var msgx :Tmessage);

  const

   DBT_DEVICEARRIVAL=$8000;

   DBT_DEVICEREMOVECOMPLETE=$8004;

  begin

   inherited;

   case msgx.WParam of

   DBT_DEVICEARRIVAL:Caption :='有光盘';

   DBT_DEVICEREMOVECOMPLETE:Caption :='没有光盘';

   end;

  end;

  问:在Delphi中如何监测Winsock的运行情况?

  答:我们可以利用以下代码监测Winsock是否运行。

  uses Winsock;

  function WinsockEnabled: boolean;

  var wsaData: TWSAData;

  begin

   result := true;

   case Winsock.WSAStartup($0101,wsaData) of

   WSAEINVAL, WSASYSNOTREADY, WSAVERNOTSUPPORTED: result := false;

   else

   Winsock.WSACleanup;

   end;

  end

  问:在Delphi中如何判断系统网络连接方式?

  答:我们可以利用以下代码在Delphi中判断系统网络连接方式。

  uses wininet;

  Function ConnectionKind :boolean;

  var

   flags: dword;

  begin

   Result := InternetGetConnectedState(@flags, 0);

   if Result then

   begin

   if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then

   begin

   showmessage('Modem');

   end;

   if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then

   begin

   showmessage('LAN');

   end;

   end;

  end;

  运行后,我们只要看到返回的消息就可知道系统网络的连接方式了。