
| 出版日期:2001-10-29 总期号:1067 本年期号:82 |
|
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; 运行后,我们只要看到返回的消息就可知道系统网络的连接方式了。 |
|||||||||||||||||||||||||||||