网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

VB与AutoCAD二次开发入门技巧资料_13061-aVBDDEAutoCAD...

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为广大网友收集整理了,VB与AutoCAD二次开发入门技巧资料_13061-aVBDDEAutoCAD...,希望对大家有所帮助!


    aVB应用程序中用DDE功能开发AutoCADforWindows目前,许多工程CAD系统是以AutoCAD作为支撑软件,在其基础上进行二次开发而形成的。AutoCADR12forWindows以AutoLISP和ADS作为二次开发工具,但它们都有不足之处,AutoLISP速度慢,没有友好的开发环境,ADS是基于C语言的开发环境,而C语言面向Windows编程本身难以掌握,因此AutoLISP和ADS的使用都受到一定的限制。VB是Windows下主要的开发工具之一,它的“可视性”和“事件驱动性”简化了面向Windows的编程,深受广大用户的青睐。Windows下,VB和AutoCAD都支持强有力的DDE(动态数据交换)功能,用VB编写具有DDE功能的程序来控制AutoCAD,既能与AutoCAD交换各种复杂的数据结构,又能向AutoCAD发送命令,由此开发出的应用程序能满足用户的需要,同时又缩短了开发周期。本文结合实例介绍了用VB开发AutoCAD的途径与方法。一、直接利用DDE功能开发DDE是Windows的强大功能之一,它可以使应用程序自动地接收由其它应用程序发送来的数据,当传送端的数据有变化时,接收端的数据也会随之改变,也可将命令或键盘输入传递给其它程序,实现远程控制。在VB编程环境中,创建应用程序的方法很简单,首先是设计用户界面,也就是在空白窗体中放入所需要的控件,如命令按钮,单选钮,文本框,标签,图片框等,然后针对各控件上要发生的事件(如鼠标单击,鼠标移动等)书写事件过程,最后将编写的应用程序运行,调试,生成执行文件即可。VB中能和其它Window应用程序建立DDE通道的控件有文本框,标签和图片框。下面结合简单实例,说明VB应用程序与AutoCAD间建立DDE通道和交换数据的方法。在VB中启动一个新项目,参见图(1)建立窗体,其中“建立链接”“直线”“标注”,,,“退出”为命令按钮,标有“Text1”的为文本框,用于建立DDE通道,并输入下面的事件代码。OptionExplicitPrivateSubcmdLine_Click()'画直线Text1.LinkExecute"[^3^3line3,38,8^3]"EndSubPrivateSubcmdText_Click()'标注文字Text1.LinkExecute"[^3^3text10,10190AUTOCAD!^10]"EndSubPrivateSubcmdLink_click()'建立链接
     Text1.LinkMode=0Text1.LinkTopic="autocad.dde|system"Text1.LinkMode=2EndSubPrivateSubcmdExit_click()'退出EndEndSub运行此应用程序,注意在运行前,一定要先加载AutoCAD。单击“建立链接”按扭,cmdLink_Click()过程被执行,执行时设置文本框Text1的LinkTopic和LinkMode的属性,完成VB应用程序与AutoCAD间DDE通道的建立。LinkTopic属性用于通知AutoCAD由谁来提供数据,它被管道符“|”分成两部分,第一部分“AutoCAD.DDE”为应
    用程序名,第二部分“System”是通讯的主题。LinkMode属性用于切实建立链接,在LinkMode=0时,表示关闭以前的DDE通道,在LinkMode=2时,表示以手动模式激活DDE通道。在完成DDE链接后,VB应用程序就可以与AutoCAD间进行数据交换或命令传送了。单击“直线”按扭,cmdLine_Click()过程被执行,应用程序通过LinkExecute方法向AutoCAD发送命令,AutoCAD中以点(3,3)和(8,8)为端心,在画一条直线。语句中的^3相当于AutoCAD中的取消键Ctrl+C,空格相当于AutoCAD中的回车键。“标注”单击按扭,执行cmdText_Click()过程,可在AutoCAD中显示以(10,10)为基点,高为1,旋转角度为90的字符串“AutoCAD!”。语句中的^10相当于AutoCAD中的回车键,在标注文字时不能用空格代替回车键。根据需要,可用上面的方法传送AutoCAD的其它命令,实现对AutoCAD的开发。二、通过调用VBADS开发上面介绍了在VB应用程序中直接利用DDE与AutoCAD作用实现开发的方法,此方法要求用户自己建立与AutoCAD间的DDE通道,此外,我们还可以通过调用VBADS函数对AutoCAD进行开发。在VBADS函数库中已有专门的函数负责建立应用程序与AutoCAD间的DDE通道,而不需用户亲自建立,较为方便。另外,VB应用程序还可以通过VBADS函数向AutoCAD发送数据和命令,同时也可以利用VBADS函数的返回值来获得AutoCAD的数据,实现对AutoCAD更深入的开发。为了利用AutoCAD的VBADS函数建立VB的应用程序,AutoCAD提供了几个VBADS支撑文件,这些文件除DDEBAS.EXE和ACADVB.DLL存放在C:\ACADWIN子目录外,其余都存放在C:\ACADWIN\VB\NEW子目录中。文件如下:1.DDEBAS.EXE-ADS/DDE服务者,为保证VB于AutoCAD间正常通信,此命令必须
     首先在AutoCAD中用XLOAD命令加载运行。2.ACADVB.DLL-VBADS动态连接库,在运行VB应用程序前,应将其拷到C:\WINDOWS\SYSTEM\子目录下。3.GLOBAL.BAS-VBADS应用程序中所需要使用的全局变量定义文件。4.ADSFUNCS.BAS-VBADS函数库,可以在VB应用程序中直接调用。5.ADSFUNCS.FRM-包含有应用程序和AutoCAD间建立DDE链接的窗体文件。下面结合具体的例子,说明利用VBADS函数开发应用程序的方法。[HJ]启动VB,打开C:\ACADWIN\VB\NEW\NEWPROJ.MAK项目文件,参见图[2]建立新窗体,并输入如下的事件代码。OptionExplicitPrivateSubForm_Load()DDE_TIMEOUT=-1txtX.Text=5txtY.Text=5txtRadius=3EndSubPrivateSubcmdCircle_Click()DimretAsIntegerDimptAsads_pointDimRadiusAsDoubleDimApndllAsApndLLTypeDimResbufAsResbufTypept.X=val(Trim(txtX.Text))pt.Y=val(Trim(txtY.Text))'定义增加链表类型'定义结果缓冲器'
    给圆心,半径赋值'定义Ads点类型'画圆过程'等待DDE事件
    '圆心,半径的隐含值
     Radius=val(Trim(txtRadius.Text))ret%=ads_newrb(10,Resbuf)'建立新的结果缓冲器Resbuf.hResbuf=0Apndll.apType=RTSTR'说明链表类型为字符串
    Apndll.apString="circle"+Chr$(0)'链表赋值ret%=ApndLLNode(Resbuf,Apndll)Apndll.apType=RTPOINTApndll.apPoint=ptret%=ApndLLNode(Resbuf,Apndll)Apndll.apType=RTREALApndll.apReal=Radiusret%=ApndLLNode(Resbuf,Apndll)Apndll.apType=RTNONE'链表结束值类型'增加链表到结果缓冲器
    ret%=ApndLLNode(Resbuf,Apndll)ret%=ads_cmd(Resbuf)ret%=ads_relrb(Resbuf)EndSubPrivateSubcmdExit_Click()EndEndSub在应用程序运行前,必须首先运行AutoCAD,并用命令(XLOAD"DDEBAS")加载DDEBAS.EXE。在上面的应用程序中,除语句DDE_TimeOut=-1外,没有其它涉及建立DDE通道的语句,因为应用程序与AutoCAD间建立DDE通道所需要的代码已保存在VBADS函数库中,打开支撑文件adsfuncs.bas,可以发现SubOPENDDE()过程,它负责VB'退出过程'执行结果缓冲器的命令'释放结果缓冲器
     应用程序与AutoCAD间DDE通道的建立,所以用户在开发应用程序时,只管调用VBADS函数即可。例子中的cmdCircle_Click()过程,是在VB4.0编程环境通过调用VBADS函数开发的,运行程序后在文本框中输入半径和圆心的值,单击“画图”按扭,即可在AutoCAD中得到所需的圆。
    -------------------------------------------------------------------------------参考文献1.《VisualBasicForWindows语言参考详解》.北京航空航天大学出版社.周民光王复康等编.1995.12.2.《AutoCADforWindows技巧与应用》.人民邮电出版社.卢师德编著.1995.5.
    bVB应用程序访问SQLServer方法探讨摘要本文讨论了VisualBasic应用程序访问SQLServer数据的几中常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法的性能和优缺点。引言MicrosoftVisualBasic(简称VB)作为一种面向对象的可视化编程工具,具有简单易学的,灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQLServer通信的API函数集及工具集。因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端。与后端的MicrosoftSQLServer相结合,VB能够提供一个鲁棒的、高性能的客户机—服务器方案。妏蚚VisualBasic釬峈?伤羲楷逄晟ㄛ迵SQLServer诿谙衄?笱都蚚腔源杨ㄛ捞ㄩ炙
    1}杅擂湿恀勤砓/Jet炙2}峈ODBCAPI晤最炙3}妏蚚SQLServer腔VisualBasic踱(VBSQL)峈DB踱API晤最炙
     本文将讨论这三种VB应用程序管理SQLServer数据的方法,并比较每种方法的性能和优缺点。炙方法1.数据
    访问对象/JetVisualBasic支持DataAccessObjects(DAOs)的子集。DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它确有许多优点。使用DAOs访问SQLServer的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通地调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQLServer提交SQL语句且返回结果。下面是一个用DAOs访问SQLServer的VB实例。炙'FormDeclarations炙'DimmydbAsDatabase炙DimmydynasetAsDynaset炙炙PrivateSubForm_Load()炙Setmydb=OpenDatabase("",False,False,"ODBC;DSN=Myserver;WSID=LCL;DATABASE=sales")炙Setmydynaset=mydbCreateDynaset("Select*fromCustomers")炙炙EndSub炙上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字段。OpenDatabase函数的最后一个参数是ODBC连接字符串参数,它指明了MicrosoftAccess连接到SQLServer所需要知道的一些内容。其中“DSN”为数据源名,“WSID”为工作站名,※DATABASE§峈垀猁湿恀腔杅擂踱靡〔炙源杨2.蚚ODBCAPI晤最炙ODBC(OpenDatabaseConnectivity)的思想是访问异种数据库的一种可移植的方式。与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中。应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器反过来通来驱动器(SQLSRVR.DLL)把它们送到服务器中。
     蚚ODBCAPI晤最ㄛ珨啜猁蚚善眕狟珨虳渗杅〔狟泼蹈堤賸都蚚腔渗杅眕挚坳蝇腔髡夔〔炙渗杅髡夔炙SQLALLocEnv场宎赵ODBC远噫ㄛ殿隙远噫历枭炙SQLALLocConnect峈蟀诿历枭煦餍啭湔甜殿隙蟀诿历枭炙SQLConnect蟀诿珨跺SQL杅擂訧埭炙SQLDriverConnect连接一个SQL数据资源,允许驱动器向用户询问信息SQLALLocStmt峈逄历历枭煦餍啭湔甜殿隙逄历历枭炙SQLExecDirect参SQL逄历冞善督昢?炙SQLFetchAdvances善赋别摩腔狟珨俴(么庵珨俴)炙SQLGetData植赋别摩腔杻隅腔珨蹈?隙杅擂炙SQLFreeStmt庋温迵逄历历枭眈寿腔訧埭炙SQLDisconnect?剿蟀诿炙SQLFreeConnect庋温迵蟀诿历枭眈寿腔訧埭炙SQLFreeEnv庋温迵远噫历枭眈寿腔訧埭炙下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句历枭〔炙GlobalgiHEnvAsLong炙GlobalgiHDBAsLong炙GlobalgiHStmtAsLong炙DimmyResultAsinteger炙DimmyConnectionAsSrting炙DimmyBuffAsString*256DimmyBufflenAsInteger炙IfSQLAllocEnv(giHEnv)<>SQL_SUCCESSThenMsgBox"Allocationcouldn'thappen!"EndififSQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESSThenMsgBox"SQLServercouldn'tconnect!"EndifmyConnection="DSN=myServer;UID=lcl;PWD=
    ;APP=ODBCTest;WSID=LCL;DATABASE=sales"myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)myResult=SQLAllocStmt(giHDS,giHStmt)myResult=SQLFreeStmt(giHStmt,SQL_COLSE)rsSQL="Select*fromCustomersWhereCity="Wuhan""myResult=SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))方法3.使用VBSQL对DB库API编程DB库是SQLServer的本地API,SQLServer的VisualBasic库(VBSQL)为VisualBasic程序员提供API。从一定意义上说,VBSQL是连接VisualBasic程序到SQLServer的性能
     郔疑郔眻诿腔源宒〔VBSQL妇漪眕狟?跺恅璃ㄩ炙
    VBSQL.VBX妇漪踱渗杅ㄛ捡衄湿恀笭猁腔秏洘睿揭烩渣昫腔夔薯炙VBSQL.BI妇嬷垀衄腔都讲睿曹讲次陇炙VBSQL.HLPWindows堆翑恅璃ㄛ妏蚚VBSQL腔硌鳅炙使用VBSQL时,必需将VBSQL.BI加入到VisualBasic工程文件中,并确保VB程序运行时有VBSQL.VBX恅璃〔炙珨跺萎倰腔VBSQL勤赶笢ㄛ珨啜猁蚚善眕狟涴虳渗杅〔炙渗杅髡夔炙Sqlinit婓谛浦侬奻蚾婥DB踱炙SqlOpenConnection湖羲督昢?蟀诿ㄛ殿隙蟀诿历枭炙SqlCmd婓谛浦侬奻膘蕾蚕揭烩韬锷炙SqlExec砃督昢?枑蝠蚕揭烩韬锷炙Sqlresults参谛浦侬隅弇婓庵珨沭(么狟珨沭)赋别摩腔羲伤炙SqlNextRow?雄藩跺赋别摩腔俴眳洁腔悜远炙SqlData湿恀珨跺杻隅蹈腔杅擂炙SqlC|ose?剿杻隅腔蟀诿炙SqlExit?剿垀衄梑羲腔蟀诿炙SqlWinExit迠狟DB踱炙一般的DB库API编程的过程是这样的:先通过调用SqlInit对DB库进行初始化,再调用SqlConnection打开一个连接,然后就可做一些工作。下面的代码是一个初始化DB库并肾翘善督昢?腔籵蚚瞰最〔炙PrivateSubinitializeApplication()炙DBLIB-VERSION♂=Sqlinit♂()炙IfDBLIB_VERSION♂=""Then炙MsgBox"CouldnotinitializeDBLIB!Exitapplication.",MB_|CONEXCLAMAT|ON炙End炙Endif炙EndSub炙PrivateFunctionLoginToServer()Asinteger炙loginToServer=SUCCEED炙Status%=SqlSetloginTime%(loginTimeOut)炙IfgiSq|Conn<>0Then炙SqlClose(giSqlConn)'寿敕眒湖羲腔蟀诿炙giSqlConn=SqlOpenConnection(gsServerName,gsLoginID,gsPassword,ProgramName♂,炙ProgramName♂)炙IfgiSqlConn<>oThen炙|iresult=SqlUse(giSqlConn,"Sales")炙Else炙LogintoServer=FALL炙EndIf炙
     EndFunction炙俶夔掀诞炙以上三种访问SQLServer的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它从VisualBasic到SQLServer的最慢的方式。ODBCAPI和VBSQL方法从本质上讲是基于程序的。ODBCAPI方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL`Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处
    理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。
    cVB应用程序编制实例VB自1991年问世以来,已从1.0版步入到功能十分强大的5.0版。VB以其开发软件周期短、操作简单、可视化程度高的优点倍受编程人员的青睐。近几年来,许多Windows程序员应用VB作为编程语言,开发了大量的应用软件。本文通过几个实例说明了VB的强大功能。一、工具棒的建立方法Windows应用程序的操作界面都含有大量的图标,这些图标集中放在某一个区域形成工具棒(Toolbars),工具棒中的图标用图示的方法表示某一种功能,可以加速操作,在某些Windows应用程序中还把这些工具棒直接称为加速棒(Speedbars)。下面介绍编制工具棒的方法。在窗体上画一个足够大的图片框,使用这个图片框可以存放图标。设置图片框的Align属性,使图片框列在窗口的顶部,即[窗体名][控件名]Align=1.在图片框中增加影像控件(ImageControl)数组或者三维命令控制按钮数组(3DCommandButtonControl)。改变控件的Picture属性,输入图形,图形的格式为:*.BMP,*.DIB,*.WMF,*.ICO。
     下面的实例介绍了工具棒的建立方法,具体步骤为:1.建立一个图片框,取名为Demo(即Name属性为Demo),设置Align属性,即Demo.Align=12.在图片框上增加三维命令按钮,设置Name属性为Tool,设置Index的属性为0(第一个控件),改变Picture属性,输入图示化的图形(文件)。改变提示信息,设置Caption取值为空。3.增加三维命令按钮控件,设置Name属性为Tool,注意使Index属性分别为1,……。2,4.建立窗体Paint事件过程SubFormPaint()Demo.ScaleHeight=Tool(0).Height'设置工具棒的高度iw%=Tool(0).Width'获取第一个图标的宽度,用于设置其他的图标宽度Fori%=0To3Tool(i%).Height=Demo.ScaleheihtTool(i%).Width=iw%Tool(i%).AutoSize=1'设置图标中的图形充满整个图形框Tool(i%).Moveiw%*i%,0'重新排列所有图标的位置Nexti%EndSub5.建立图标事件过程为工具棒中的每一个图标增加一个过程,执行相应的命令:SubTool_Click(indexAsInteger)
    Ifindex=0ThenTool(0).Picture=Load(″animal.bmp″)'更换第一个图标中图像
     ElseIfindex=1Thenj%=Shell(″calc.exe″,1)'执行WINDOWS95计算重新CALC.EXEElseIfindex=2ThenEnd'中止程序的执行EndIf
    EndSub在实际应用中,程序员可以发挥自己的想象力,从而完善工具棒的功能。二、Windows演示程序的编程方法Windows应用软件系统中教学演示程序,在整个系统中占有
    十分重要的地位,它从一个侧面反映了应用软件的功能和用户界面。下面介绍了使用VB编制演示软件的语言基础,并列举实例说明。三、演示软件激活语言软件的方法应用软件可以通过演示程序激活,无论该应用程序是否是用户自己编制的程序。例如,用户可以通过演示激活字处理软件WordforWindows。应用软件的激活可以依照应用软件所处状态使用Shell函数或AppActivate命令激活。1.Shell函数的使用Shell函数可以运行一个执行程序(即应用程序),类似在“文件管理器”的“文件”菜单中运行一个程序,Shell函数的使用语法是:
    Shell(commandstr$,winstyle%)其中,commandstr$是一个包含有路径的可执行文件字符串,winstyle%是决定运行窗口类型的参数。例如j%=Shell(″c:\win\write.exe″,1)该句启动Windows中“Write”应用软件,窗口类型为具有输入焦点的正常窗口,它的返回值在VB中不使用。
     2.AppActivate命令的使用AppActivate命令可以把Windows的焦点移向指定的应用程序,若该应用程序没有启动,AppActivate也不能启动,且此时会出现运行错误,使用AppActivate的语法是:AppActivatetitletext$titletext$是应用出现的标题(窗口顶部的第一行文字),对大小写不敏感。例如:
    AppActivate“calculator”orAppActivate“CALCULATOR”
    这两句都能够把Windows的焦点移向“计算器(Calculator)”,即把计算器从后台调入前台。对于中文版Windows应使用下面的命令:AppActivate“计算器”
    3.模拟输入控制应用程序演示程序的关键是能使用代码模拟手工输入,控制应用程序的运行过程。使用Sendkey命令可以模拟键盘输入,使用方法为:
    Senekeykeyin$,Wait%
    其中,keyin$为模拟输入的控制字符串。Wait%为真(非零)时,说明其它程序运行模拟输入完毕后,VB才继续运行;Wait%为假时,说明VB命令一执行(SendKeys),马上继续运行自己本身。Wait%可省略,缺省值为0。下面为两实例:
    SendKeys“%{F4}”,1该句说明向应用程序输入,相当于通过键盘键入了退出应用程序的操作。
     SendKeys“(Hello){Enter}”,1相当于通过键盘键入“Hello”,然后按回车键换行。
    四、实例枣使用WordforWindows应用程序下面的实例,演示使用Word,模拟输入“电脑爱好者”的英文和中文。
    PrivateSubForm_Click()
    x=Shell(″c:\msoffice\winword\winword.exe″,1)'启动WordforWindowsSendKeys″(ComputerFan)″,1'模拟输入英文″ComputerFanSendKeys″{Enter}″,True'停留三秒waittime(3)SendKeys″电脑爱好者{Enter}″,1waittime(3)SendKeys″%″,1waittime(2)SendKeys″(F)″,1'模拟按字母″F″,选择″文件(F)″菜单waittime(2)Sen
    dKeys″(X)″,1'模拟按″X″选择,″退出″SendKeys″(N)″,1'WORD弹出一个对话框,询问文件是
     否存盘,模拟按″N″End
    EndSub
    PrivateSubwaittime(xtAsSingle)
    DimstarttimeAsSinglestarttime=TimerDoUntil(Timer-starttime)>xtLoopEndSub
    总之,演示程序的编制主要是使用Shell、AppActivate和SendKeys函数或语句,并且对应用程序进行演示时,需全面掌握键盘的输入过程,以便模拟。下面为一演示计算器使用的演示程序。读者不妨一试。
    PrivateSubForm_Click()
    x=Shell(″c:\winwords\calc.exe″,1)'启动计算器SendKeys″(2)″,1'模拟输入2waittime(3)'停留三秒SendKeys″(+)″,1'模拟输入″+″
     waittime(3)SendKeys″(2)″,1waittime(2)SendKeys″(=)″,1'模拟输入″=″waittime(3)SendKeys″4″,1'模拟得到结果waittime(4)SendKeys″(F)″,1'模拟按字母″F″,选择″文件(F)″菜单SendKeys″(X)″,1'模拟按″X″,选择″退出″
    End
    EndSub
    五、Windows初始化文件的修改Windows应用程序的初始化文件(INI)对应用程序缺省设置起着重要的作用,初始化文件可以采用文本编辑器修改,但这种方法容易出现错误,不易由用户操作。下面介绍用VB实现修改初始化文件的方法。
    1玩场宎赵恅璃腔赋凳迵杻萸Windows应用程序初始化文件中通常设置应用程序的运行环境,确定应用程序变量的缺省设置,初始化文件既包含Windows本身的两个INI文件,也包括应用程序的初始化文件。如:win.ini、system.ini、ucdos.ini、vb.ini等。
     其中,ucdos.ini、vb.ini分别为希望公司的UCDOS和VB的初始化文件,这些初始化文件一般都是由应用程序和关键词构成,文件中内容的格式采用下面的通用格式:
    [程序名称]关键词=取值
    例如,在system.ini中有一段内容设置非WINDOWS应用程序的字体,即:
    〔NonWindowsApp〕FontChangeEnable=1其中,NonWindowsApp为应用程序名,FontChangeEnable为关键词,1为取值。
    2玩迵场宎赵衄寿腔API渗杅Windows95中的动态链接库Kernel.exe包含了六个函数,可以对INI文件进行操作,其中GetProfileInt、GetPrivateProfileInt、GetProfileString和GetPrivateString四个函数可以从INI文件中基于应用程序名和关键词的行获得信息。WritePrivateProfileString和WriteProfileString两个函数可以在INI文件中修改或创建文件中的有关行。在VB应用程序中应按下面的方式在全局模块中进行声明。
    DeclareFunctionGetProfilelntLib″Kernel″(ByVallpAppNameAsString,ByVallpKeyNameAsString,ByValnDefaultAsInteger)AsInteger
    DeclareFunctionGetProfileStringLib″Kernel″(ByVallpAppNameAsString,lpKeyNameAsAny,ByVallpDefaultAsString,ByVallpReturnedsringAsString,ByValn
    SizeAsInteger)AsInteger
     DeclareFunctionWriteProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,lpStringAsAny)AsInteger
    DeclareFunctionGetPrivateProfilelntLib″Kernel″(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByValnDefaultAslnteger,ByvallpFileNameAsString)AsInteger
    DeclareFunctionGetPrivateProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsString,ByValnSizeAsInteger,ByvallpFileNameAsString)AsIntegerDeclareFunctionWriteProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,lpStringAsAny)AsInteger
    其中:lpApplicationName$为应用程序名称;lpKeyName$为关键词;nDefault%为关键词指定的缺省值;lpFileName$为初始化文件名称;lpDefault$为关键词指定的缺省字符串;lpReturnString$为接受返回值指定字符的缓冲变量;nSize%指定拷贝到缓冲变量的字符个数;lpString$为新的关键词指定字符串。奻泼腔汒陇褫眕植VB醴翘奻腔winapi笢恅璃win32玩txt凤腕ㄛ褫眕籵彻熟泂衔眻诿萧探善VB笢〔
    3玩党蜊场宎赵恅璃妗瞰
     Windows?璃妇最唗夺烩?(PROGRAM玩EXE)ㄛ场宎赵恅璃峈PROGRAM.INIㄛ?吽啭?峈
    [Settings]……order=632471……
    其中,order指定程序组的排列顺序,下面的程序把Order的值改为“2341765”,并使用SHELL函数启动程序管理器。
    PrivateSubform_Click()
    lpAppName$=″Settings″lpKeyName%=″Order″lpString$=″2341765″lpFileName$=″progman.ini″j%=WritePrivateProfileString(lpAppName$,lpKeyName$=″Order″,lpString$=″2341765″,lpFileName$)j%=Shell(″progman.exe″,1)
    EndSub
     六、增强VB的报表制作功能VB专业版中包含一个报表制作软件?/FONT>CrystalReport简版,该软件是一个功能强大的报表制作系统,但因其版本低而且是简本,功能受到一定的限制。下面介绍CrystalReport增强VB报表功能的方法及使用。
    1玩CrystalReport载陔VB腔源杨CrystalReport更新VB,只需要覆盖VB报表子目录下的一些文件,例如CrystalReport安装在缺省目录“C:\CRW”,VB报表的子目录为“C:\VB\REPORT”,文件更新和替换步骤为:
    (1)更新CRW.EXE和CRW.HLPcopyc:\crw\crw.exec:\vb\reportcopyc:\crw\crw.hlpc:\vb\report(2)增加文件CRSUPREG.DLL和文件CRSUPPRT.DLLcopyc:\crw\crsupreg.dllc:\vb\reportcopyc:\crw\crsupprt.dllc:\vb\reportCrystalReport版本更新后,在VB编程环境下,激活菜单“Windows/ReportDesigner”,可以启动新版的CrystalReport。(3)Crystal.vbx文件更新
    2玩CRPE.DLL腔妏蚚CrystalReport动态链接库CRPE.DLL能够在应用程序中调用CrystalR
    eport的报表模块,实现与CrystalReport相同的报表功能,CRPE.DLL支持的语言有C、C++、VB、VC、Delphi等,下面介绍VB调用CRPE.DLL的方法。
     DeclareFunctionPEOpenPrintJobLib“CRPE.DLL”(ByValRptName$)AsInteger
    DeclareFunctionPEClosePrintJobLib“CRPE.DLL”(ByValPrintJob$)AsInteger
    其中PEOpenPrintJob函数开始报表打印工作,PEClosePrintJob子程序关闭报表打印工作。在调用时注意指明CRPE.DLL所在的路径,如“C:\CRW\CRPE.DLL”函数和子程序的声明比较严格,容易出现错误,在编辑时采用下面两种方法中的任意一种简化声明工作。(1)在工程文件(MAK)中,包含文件GLOBAL.BAS,该文件在目录“C:\CRW”下。(2)在某一编辑器中打开文件GLOBAL.BAS,把需要的声明块拷贝到剪贴板上,然后进入VB编程环境中,使用PASTE命令将剪贴板中的内容粘贴到VB程序中。CrystalReports提供了一个例程CRPEDEMO.MAK,介绍这些函数和子函数的使用方法。下面的事件过程Command1_Click()直接向屏幕输出报表ORDERS.RPT。
    SubCommand1_Click()
    result%=PEPrintReport(″c:\CRW\CODERS.RPT″,0,1,″报表输出演示″,CW-USED
    EFAULT,CW-USEDEFAULT,CW-USEDEFAULT,CW-USEDEFAULT,0,0)
    Ifresult%<>0ThenMsgBox(″报表不能输出″)
    EndSub
     函数PEPrintReport是一个非常实用的函数,它不需要调用其它任何函数,直接输出(向打印机或屏幕)已形成的报表。
    3玩惆桶讽璃扽俶扢离CrystalReport提供的Crystal.vbx的属性更加容易控制。下面的实例介绍了程序在运行时更改CrystalReport控件属性的方法。
    SubCommmand1_Click()
    Main.Reportl.CopiesToPrinter=Copies.Text′设置报表调用份数Main.Reportl.DetailCopies=NDetailCopies.Text′设置节中调用份数IfCollate.Value=TrueThenMain.Reportl.PrintCollation=1′设置是否进行打印份数检验ElseMain.Reportl.PrintCollation=0EndIfIfStartPage.Tcxt=“”ThenMain.Reportl.PrinterStartPage=0'设置打印报表的起始页ElseMain.Reportl.PrinterStartPage=StartPage.TextEndIfIfEndPage.Tcxt=“”ThenMain.Reportl.PrinterStopPage=0'设置打印报表的中止页
     ElseMain.Reportl.PrinterStopPage=StopPage.TextEndIfIfSaveData.Value=TrueThenMain.Reportl.DiscardSaveData=False'确定是否存储报表数据ElseMain.Reportl.DiscardSaveData=TrueEndIfMain.Reportl.Destination=1'输出设置(打印机)
    EndSub
    
    
  • 上一篇资讯: VB与SQL语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师