Foxtable(狐表)用户栏目专家坐堂 → 12月8日超级更新,为高端用户加上一对翅膀,无限扩展Foxtable的功能


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

主题:12月8日超级更新,为高端用户加上一对翅膀,无限扩展Foxtable的功能

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
12月8日超级更新,为高端用户加上一对翅膀,无限扩展Foxtable的功能  发帖心情 Post By:2009/12/8 11:02:00 [显示全部帖子]

本次更新主要是针对高端用户的,普通用户了解一下如何在全局代码中定义变量即可(绿色字体部分):



1、增加了引用外部库的功能(这里必须是托管的DLL,也就是.net下编译的DLL),对于非系统的DLL文件,以前库文件只需复制到Foxtable目录下即可,现在除了复制,还得引用;除了引用的功能,还增加了命名空间的定义。以lxl斑竹提供的库为例:


此主题相关图片如下:002.gif
按此在新窗口浏览图片



此主题相关图片如下:001.gif
按此在新窗口浏览图片


一旦加上了引用,就可以直接在代码中使用改库的功能:

Dim app As New Office.Excel.Application
Dim book As Office.Excel.Workbook = app.Workbooks.Open("C:\112.xls")
Dim sheet As Office.Excel.Worksheet = book.Sheets.Item(1)
app.Visible = True
sheet.PrintPreview()
book.Close()
app.Quit()




2、增加全局代码的功能:


此主题相关图片如下:003.gif
按此在新窗口浏览图片



你可以在这里定义API函数,例如:


Declare Function getUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, ByRef nSize As Integer) As Integer

 

<DllImport("kernel32.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> _
Public Function lstrlenA(ByVal InString As String) As Integer
End Function


如果不是系统的,而是第三方的DLL,请事先将其复制到foxtable目录下。
一旦定义了,就可以直接在任何地方使用上面的API函数,例如:



Return lstrlenA("ABC")



Foxtable的全局变量定义和使用都不便利,而且不是所有的事件都能引用,现在你可以在全局代码中定义变量,用Public代替Dim,这样定义的变量可以在任何事件代码中引用,例如:

Public  gbStartDate As Date
Public  gbEndDate As Date



这样就定义了两个日期型全局变量,分别为gbStartDate  和 gbEndDate ,你可以在任何事件代码中直接使用,例如:



MessageBox.show("起始日期:" & gbStartDate)


为了避免全局变量和事件中定义的变量出现名称冲突,建议全局变量统统用gb开头。



全局代码中不仅可以定义变量和API函数,还可以直接定义过程或者函数,例如:


Public Function LenStr(ByVal val As String) As Integer
        Dim b() As Byte = System.Text.Encoding.ASCII.GetBytes(val)
        Return b.Length
End Function

定义好之后,你可以在任何事件代码中使用这个函数:

MessageBox.show(lenstr("ren们"))

3、虽然原有的全局变量不够便利,但是可以绑定,而且有事件跟踪其值的变化,所以不仅不会淘汰的,还增加了一个统一定义的界面:


此主题相关图片如下:004.gif
按此在新窗口浏览图片

请不要再使用Vars.Add方法来增加变量,以便于管理。

4、开发接口

DataTable有一个BaseTable属性,返回底层的System.Data.DataTable对象
Table有一个View属性,返回底层的System.Data.DataView对象。
Table有一个Grid属性,返回底层的C1.Win.C1FlexGrid.C1FlexGrid对象

所有的控件都有一个BaseControl属性,返回其对应的System.Windows.Forms.Control对象
窗口有一个Panel对象,返回一个Foxtable.FormPanel容器,窗口所有的控件都在这个容器中
对于模式窗口和独立窗口,可以通过窗口的BaseForm属性,返回对应的Windows.Forms.Form对象

有了这些接口以及前面提到的引用功能,就可以无穷无尽的扩展foxtable的功能。
例如你可以加入第三方的控件,并帮定到foxtable中的表。
提示:最好在窗口的BeforeClose事件中,将第三方控件移除并销毁。

如果要使用第三方的开发工具,请引用foxtable.exe和foxtable.lib.dll,这两个文件包括foxtable所有公开的类型

5、修正了一些bug

[此贴子已经被作者于2009-12-8 12:16:59编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/8 11:24:00 [显示全部帖子]

以下是引用程兴刚在2009-12-8 11:21:00的发言:
看来您的无声无息会给我们带来更大的惊喜!



从这个版本开始,你可以研究你的加密狗了。
让对方提供Dll库以及vb.net使用的例程即可。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/8 11:35:00 [显示全部帖子]

收到


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/8 12:41:00 [显示全部帖子]

以下是引用hnaysx在2009-12-8 12:36:00的发言:
点外部引用,点浏览,点取消 提示信息不友好


收到


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/8 15:45:00 [显示全部帖子]

以下是引用baoxyang在2009-12-8 15:43:00的发言:
能否有个范例就好了,现在不知如何应用?


不用管它如何用的。
这是针对会Visual studio的用户的。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/8 17:06:00 [显示全部帖子]

以下是引用舜风在2009-12-8 16:32:00的发言:

不知如何让用户改初始值:如何让不同的用户,最方便地重新定义工资表的表名?


不是有用户扩展属性吗?


 回到顶部