王宁:在VB中如何通过程序实现自动启动拨号网络,并对不同的号码及其它参数进行设定?
李海:要想实现自动启动拨号网络,就要使用Remote Access Service (RAS) API,这个API最早是在Windows for Workgroup 3.11中出现的,现在它已经成为Win32 API的一个组成部分。该API将整个拨号网络称为Phonebook,而每一个连接称为PhonebookEntry。你可以使用RasCreatePhonebookEntry来创建新的连接,用RasDial来拨号,而RasEnumEntries可以获得当前系统已有的所有连接,使用其它的RAS函数还可以获取或设置连接的参数。 RasEditPhonebookEntry函数将激活标准的Windows 95/NT属性对话框来修改连接的属性。你可以从Win32 API的手册找到所有相关函数的详细介绍。对于VB来说直接调用RAS API有一些不便,因为该API的函数使用了一些自定义的类型(Type),所以Microsoft专门设计了类模块封装了整个RAS API。你可以从http://support.microsoft.com/download/support/mslfiles/Vb32ras.exe下载一个使用VB 4.0编写的例子。释放该文件后可以找到两个工程文件:RAS_AUTO和RASAPI。RAS_AUTO是对API的封装,你可以把它编译成DLL的OLE Automation服务器供自己的程序调用。RASAPI是调用RAS_AUTO服务器的例子,该程序是你需要认真研究和掌握的。如果你不喜欢这种封装形式,也可以直接使用Ras_glb.bas文件,这里包括了所有需要的API声明。
石家庄·李剑锋:我在使用DELPHI 3进行数据库编程的时候,希望DBGRID构件在显示数据的时候能象FoxPro的BROWSE命令一样,锁定左边指定的几列不进行滚动,请问应用什么方法来实现?
李海:我们知道Delphi的TStringGrid有一个属性FixedCols来指定不滚动的列。虽然TDBGrid不能直接使用这一属性,但通过强制类型转换也可以首先这一功能,因为这两个类都来自TCustomGrid类。下面我们以Delphi 3.0的Demos\Db\CtrlGrid为例来说明具体的用法。在这个例子的TFmCtrlGrid.FormShow过程中加入如下一行:
TStringGrid(DbGrid1).FixedCols := 2;
运行该程序,就可以得到图1所示的效果,在左右移动各列时,Symbol列不会移动。除了这种方法,也可以采用下面的方法:首先在Form声明部分加上
type TMyGrid = Class(TDBGrid) end;
然后在TFmCtrlGrid.FormShow过程中加入:
TMyGrid(DbGrid1).FixedCols := 2;
两者从形式上略有不同,但实质都是一样的。我们这里设置FixedCols为2,这是因为在DBGrid构件最左侧有个指示列,如果你将DBGrid的Options属性的dgIndicator设为False,则应设置FixedCols为1。
图1 通过强制类型转换使TDBGrid类支持FixedCols属性
安徽萧县·李小川:我想把多年来爱听的歌汇编成册,不料多种常用的编辑软件均不能把乐谱输得象模象样,不知从何处能寻到编简谱(能编五线谱更好)的软件?
李海:找到编写和打印乐谱的软件并不难,但免费的软件却非常少见。在www.hotfiles.com使用music score作为关键词,你可以找到不少此类软件,价格从十几美元到几百美元都有。打印乐谱通常只是此类软件众多功能中的一个,因为许多软件都支持MIDI音乐的录制和播放。几乎所有此类软件都支持五线谱,但极少有支持简谱的,因为国外的音乐教育通常只使用五线谱,而不使用简谱。Music Works Personal(http://www.manac.com.au/)和Cakewalk Pro Audio(http://www.cakewalk.com)是目前比较流行的两个工具。我个人的看法,前者比较简单,更适合业余爱好者使用,而后者比较专业,为许多MIDI编曲者喜用。下图就是Music Works Personal编辑乐谱的画面,该软件目前还是16位版本,但可以在Windows 95/NT下运行。它支持的各种符号和乐谱标记是非常丰富的,可以用鼠标进行拖放式输入。使用它的Text工具也可以输入歌词。该软件支持音乐录制和播放,支持MIDI文件。
图2 使用Music Works Pro编辑乐谱
sun:我在公司里建立了一个intranet网,服务器操作系统为Windows NT 4.0,今欲建立内部查询网页,用VB 5.0的中文企业版建立了一个ActiveX用户控件,是在客户机上生成的,但文件均存于服务器,并通过ActiveX control pad将先前生成的.ocx文件插入到网页中,一切正常,在此客户机上通过IE 4.0浏览完全可运行此程序,然而在另一客户机上则无法运行此控件。我曾经想过原因是否是不能在客户机上编译,因此也曾在服务器上作过同样一遍,情况却依然如故。是我的方法有问题吗?
李海:问题的关键不在于你是在客户机还是在服务器上编译生成这个ActiveX控件,而在于你的ActiveX控件没有被正确安装在客户机上。你当然可以手工在客户机上安装这个控件,但那样太麻烦,还是借助Visual Basic的Application Setup Wizard来做这一工作。在Application Setup Wizard的第一步,选择“Create Internet Download Setup”(图2),然后选择Next继续下去,直至完成全部工作。最后,Application Setup Wizard会建立两个文件:*.cab和*.htm。*.cab文件包括了你的ActiveX控件,应该把它放在服务器上。*.htm是一个范例借助这个例子,你可以来修改你的主页,其核心就是修改Object标签的Codebase属性。这样用户机的IE 4.0在浏览时如果没有在客户机找到你的控件,就会利用Codebase属性从服务器上下载*.cab文件,并自动解包、安装并注册ActiveX控件。
图3 使用Application Setup Wizard来帮助安装ActiveX控件
如果您有任何建议,请给我发电子邮件:
。
版权所有 李海,热情软件屋 1997-2006