📄 00000020.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: Zeemon (踏遍青山), 信区: Visual <BR>标 题: [CB3]CB3中的Runtime Package的几个用法 <BR>发信站: BBS 水木清华站 (Sat Jun 27 17:15:49 1998) <BR> <BR>[CB3]CB3中的Runtime Package的几个用法 <BR> <BR>(1)在DLL中使用主应用的数据库连接 <BR>如果DLL的Project将project\options\package中 <BR>"Build with runtime packages"选中,只要dll中的 <BR>TQuery,TTable的DatabaseName和主应用程序中的一样, <BR>在dll中不用重新建立数据库连接就可以使用数据库了! <BR>如果不选"Build with runtime packages",在dll里就 <BR>不能直接连上数据库。 <BR> <BR>当然,如果要直接使用TDatabase的一些功能,如 <BR>StartTransaction等,还得把主应用的TDatabase <BR>对象的指针传到DLL里去。 <BR> <BR>实际上是因为,VCLDB35和VCLDBX35通常作为缺省的 <BR>Runtime Package出现在Runtime Package的编辑框中。 <BR>在Build的时候,VCLDB35和VCLDBX35就作为Runtime <BR>Package了。这样,在运行时主应用程序和DLL使用的 <BR>是同一个VCLDB35(VCLDBX35)对象,当然使用的数据库 <BR>连接就是同一个了!就是说,DLL在被Load的时候不会 <BR>再创建自己的VCLDB35对象和VCLDBX35对象,而与主应 <BR>用共用一个。 <BR> <BR>(2)在DLL中创建能在任务栏上出现的非模式窗口 <BR>如果在DLL的Project中选中了"Build with runtime <BR>packages",那么在DLL中创建的非模式的Form(就是 <BR>Show而不是ShowModal出来的Form)通常不会在任务栏 <BR>上出现。其实很简单,只需把VCL35从DLL的Runtime <BR>Package中去掉(就是不把VCL35作为Runtime Package), <BR>这些窗口就会在任务栏上出现了。 :)) <BR>不过这样的话,编译出来的DLL的大小会比原来增加 <BR>400多K,那就要你自己来进行取舍了。 <BR> <BR>Runtime Package的用法还有很多,以上只是我从实践中 <BR>总结出来的。对于"Build with runtime packages"以及 <BR>Runtime Package的使用,CB3的帮助中有一段很好的说明: <BR>When using packages all globals are shared between <BR>all modules in the process. The global Application <BR>object, for example,available to the package-built <BR>DLL, is the same object instance used by the host EXE, <BR>and all other packages. This is also true for the <BR>global clipboard, printer, standard I/O file handles, <BR>and any other global data. These global variables <BR>(but not thread variables) in packaged units are <BR>accessible anywhere in the application because there <BR>is only one copy of the packaged code that is shared <BR>among all modules. This includes other packages and <BR>the host EXE itself, thus creating a single namespace <BR>for global data. If your application uses VCL35,each <BR>package, as well as the host EXE, share an instance of <BR>the VCL runtime code. <BR> <BR> <BR>-- <BR> 最后青蛙问道:"为什么?我告诉过你我是一位美丽的公主, 会与你 <BR>共度一个星期并让你为所欲为. 你为什么还不愿吻我?" <BR> 男孩说道:"我是一个程序员. 我没时间交GF, 但拥有一只会说话的 <BR>青蛙简直太酷了." <BR> <BR> <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.23.7] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -