以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  12月8日超级更新,为高端用户加上一对翅膀,无限扩展Foxtable的功能  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5331)

--  作者:狐狸爸爸
--  发布时间:2009/12/8 11:02:00
--  12月8日超级更新,为高端用户加上一对翅膀,无限扩展Foxtable的功能

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



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编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/12/8 11:08:00
--  
沙发
--  作者:yuanbin
--  发布时间:2009/12/8 11:09:00
--  

先顶起再说。


--  作者:smileboy
--  发布时间:2009/12/8 11:12:00
--  
顶起
--  作者:程兴刚
--  发布时间:2009/12/8 11:14:00
--  
兴奋,谢谢!
--  作者:程兴刚
--  发布时间:2009/12/8 11:21:00
--  
看来您的无声无息会给我们带来更大的惊喜!
--  作者:狐狸爸爸
--  发布时间:2009/12/8 11:24:00
--  
以下是引用程兴刚在2009-12-8 11:21:00的发言:
看来您的无声无息会给我们带来更大的惊喜!



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


--  作者:程兴刚
--  发布时间:2009/12/8 11:28:00
--  
以下是引用狐狸爸爸在2009-12-8 11:24:00的发言:



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


谢谢,样狗已经备齐,学到一些知识,就是没有深入研究,现在好了,在此表示感谢!
       狐表成为真正的开发工具,从今天开始,这个日子是狐表成长史上的一个重要里程碑!


--  作者:lihe60
--  发布时间:2009/12/8 11:30:00
--  

我顶


--  作者:i52117
--  发布时间:2009/12/8 11:32:00
--  
狐爸把日期写错了图片点击可在新窗口打开查看


[此贴子已经被作者于2009-12-8 11:50:57编辑过]