Foxtable(狐表)用户栏目专家坐堂 → 独占编辑


  共有7650人关注过本帖树形打印复制链接

主题:独占编辑

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 14:52:00 [显示全部帖子]

是的,要写一个类似QQServer的程序放在服务器运行。你项目还要加上QQClient连接登陆服务器的代码。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 15:56:00 [显示全部帖子]

以下是引用ycwk在2018/1/29 15:48:00的发言:
和之前的独占方式比有什么优势呢?

 

之前是把信息存放在数据库里面每次比较都去查找数据库,控制逻辑都在客户端完成;

 

现在把信息存放在服务器,由服务器判断返回信息,客户端相对代码减少而且代码基本不需要更改。

 

优势的话,就是不需要查找写入数据库、控制逻辑不需要写在客户端。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 16:43:00 [显示全部帖子]

以下是引用ycwk在2018/1/29 16:08:00的发言:
我想通过openQQ协作编辑word文档,可以用这种方法实现对 .docx文档的独占编辑吗?   (把word文档存在表中的附件列)
[此贴子已经被作者于2018/1/29 16:15:57编辑过]

 

可以。但只是做一个标记。当你打开word文档的时候(在foxtable里面操作打开),记录某某用户打开了xx文档。但是当其关闭文档的时候,程序是无法知道的,要做一个定时器循环检测某某文件是否已经关闭的,如测试代码

 

vars("p") = system.Diagnostics.Process.Start("d:\test.doc")
msgbox("下面代码判断是否关闭")
try
    vars("p").id
    msgbox("还在打开")
catch ex As exception
    msgbox("xxx已经被关闭")
End try


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 17:30:00 [显示全部帖子]

以下是引用ycwk在2018/1/29 17:16:00的发言:
怎么写服务端代码最少?  客户端呢?  我只需要协作编辑啊,不需要QQ聊天的功能

 

1、那你就不要用服务端了吧。

 

2、打开word的时候,把用户名写进表格里保存,关闭word的时候,把数据移除,即可。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 17:51:00 [显示全部帖子]

以下是引用ycwk在2018/1/29 17:38:00的发言:
 还想请问一下,关闭word,  foxtable能感知到吗?  还是只能用上面提到的定时器的方法?

 

只能用定时的方法检测知道,比如

 

打开程序

 

vars("ls") = new Dictionary(of String, object)
vars("ls").add("文档1",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档2",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档3",system.Diagnostics.Process.Start("d:\test.doc"))


 

检测是否关闭

 

try
    vars("ls")("文档3").ExitTime
    msgbox("还在打开")
catch ex As exception
    msgbox("xxx已经被关闭")
End try

[此贴子已经被作者于2018/1/29 17:51:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 17:58:00 [显示全部帖子]

打开文件是你控制的,如果某人正在编辑,那就不要让其下载和打开呗。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/29 18:20:00 [显示全部帖子]

编写beforeOpenFile事件,控制打开的文档,路径自己合成。

 

http://www.foxtable.com/webhelp/scr/2637.htm

 

vars("ls").add("xxx",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\协作文档.docx"))


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/30 9:31:00 [显示全部帖子]

1、beforeOpenFile事件,或者在你要打开word文档的代码那里,要处理成这样:先判断xx文件是否被占用(查找表),如果没有占用,就合成ftp路径下载文件,然后打开文件,同时把文件标记为占用(赋值给表)。

 

2、beforeOpenFiles事件,要加上 e.cancel = true 这样的代码,才能防止重复打开。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/30 10:43:00 [显示全部帖子]

检测文件是否关闭,需要用计时器的。参考代码

 

打开程序

 

vars("ls") = new Dictionary(of String, object)
vars("ls").add("文档1",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档2",system.Diagnostics.Process.Start("d:\test.doc"))
vars("ls").add("文档3",system.Diagnostics.Process.Start("d:\test.doc"))


 

 

检测文档3(或者其他文件)是否关闭

 

try
    vars("ls")("文档3").ExitTime
    msgbox("还在打开")
catch ex As exception
    msgbox("xxx已经被关闭")
End try


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/30 10:49:00 [显示全部帖子]

以下是引用ycwk在2018/1/30 10:42:00的发言:
 感觉不能用下面的代码打开文档,因为文件放在ftp上面,狐表的文件管理器是把ftp上的文件缓存到本地后在本地打开,我写的代码肯定没有办法做到的,所以如果我把路径指向FTP ,则文件只能下载文件但不能自动打开;如果指向本地,本地还没有下载之前又没有,还请指教怎么办?
vars("ls") = new Dictionary(of String, object)
vars("ls").add("xxx",system.Diagnostics.Process.Start("D:\foxtable\Development\CaseStudy\RemoteFiles\182004.txt"))

 

1、叫你用ftp的路径,把文件下载以后,再打开啊

 

2、做一个计时器,循环检测vars("ls")里面的文件是否被关闭了,如果关闭了,那就把表的占用的数据修改。


 回到顶部
总数 34 1 2 3 4 下一页