以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于Syscmd.Project.Exit() 命令  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=47773)

--  作者:kunny
--  发布时间:2014/3/17 13:33:00
--  关于Syscmd.Project.Exit() 命令
在启动程序的过程中,有些情况需要直接关闭程序,就使用了系统Syscmd.Project.Exit(),但是在如下的所有项目事件中都尝试了这个命令:
beforeOpenProject
BeforeConnectOuterDS
beforeLoadInnerTable
BeforeLoadOuterTable
LoadUserSetting
AfterOpenProject
Initialize

每一个都会有如下的提示:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140317133103.jpg
图片点击可在新窗口打开查看

其中,在beforeOpenProject、BeforeConnectOuterDS、beforeLoadInnerTable和LoadUserSetting中是没有任何其它代码的,就此一句Syscmd.Project.Exit(),哪位能知道这是什么原因造成的呢?


--  作者:lsy
--  发布时间:2014/3/17 13:44:00
--  

Syscmd.Project.Exit() 是退出项目,

打开了项目,才会有退出项目吧。


--  作者:kunny
--  发布时间:2014/3/17 14:17:00
--  
喔,那要是在AfterOpenProject之前的某个阶段关闭程序,如何实现呢?
--  作者:Bin
--  发布时间:2014/3/17 14:19:00
--  
你好,你提问中完全没有包括AfterOpenProject , 而且在AfterOpenProject是可以使用的.

如果是BeforeOpenProject,请认真查看一下事件介绍你会发现如下

e参数属性:

File: 字符型,表示正在打开的项目文件名称,含路径。
Cancel: 逻辑型,设为True,拒绝打开项目。
HideSplashForm: 逻辑型,设为True,关闭Foxtable的启动封面。



所以你只需要设置 e.Cancel=true 即可


--  作者:kunny
--  发布时间:2014/3/17 15:27:00
--  
OK,谢谢!
--  作者:kunny
--  发布时间:2014/3/20 23:06:00
--  
还要处理一下BeforeConnectOuterDS中的事件,要求在连接数据源错误的时候直接关闭项目.
这时候应该也是没有打开项目,也不支持e.Cancel=true,用什么方法呢?

--  作者:狐狸爸爸
--  发布时间:2014/3/21 8:14:00
--  
楼上同学,不可以在BeforeConnectOuterDataSource事件中关闭项目。
可以在BeforeOpenProject用TryConect直接判断连接字符串是否可以连通。不同则Cancel:
 

TryConnect

测试指定的链接字符串能否连通,如果能连通,则返回True,否则返回False。

语法:

TryConnect(ConnectionString)

ConnectionString:要测试的链接字符串。

Dim s As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\data\\Northwind.mdb;Persist Security Info=False"
If
Connections.TryConnect(s) = False Then
    MessageBox.Show("数据源无法连通!"
)
End If


--  作者:kunny
--  发布时间:2014/3/23 9:25:00
--  
多谢!