菜鸟也能用foxtable开发自己的应用程序整理篇

更新时间:2024-01-27 13:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

菜鸟也能用foxtable开发自己的应用程序整理篇(word版本)

第一部分所需要的文件及讲解提纲

1. 创建我们的第一张表——会员表 表结构如下图:

同时设置字段的类型,其他的暂时不要考虑; 2.分析我们的第一张表,看看是否有什么事件会发生? 可以按照以下的思路去分析

这样,一个一个部分的来做

1)增加的时候是否有什么动作发生? 当添加一个新会员的时候,各个字段的状态 会员卡号,默认为会员编号; 会员等级,默认为普通; 卡片状态,默认为正常; 过期时间,默认为今天+一年; 卡片余额,默认为0; 积分数量,默认为0; 折扣字段怎么操作呢?

这些分析完毕之后,想想怎么达成你的目的呢? 既然是新增的时候发生的事情,那么就找到表事件

当我们点击 datarowadding的时候,就会看到帮助的动态提示 DataRowAdding

增加一行时执行,此时新增行(DataRow)已经创建,但并未真正增加到DataTable中,通常在此处对新增行进行默认值的设置。 e参数属性:

DataTable:返回增加行的数据表。 DataRow: 返回新增加的行。 示例一

例如希望新增行的日期设为当前系统日期,姓名设为当前登录用户名,可以将DataRowAdding事件的代码设置为: e.DataRow(\日期\) = Date.Today() e.DataRow(\姓名\) = User.Name

有了这个提示,以上的内容是不是就迎刃而解了呢?

是不是觉得其实弄这个也挺简单的嘛!

代码如下:

e.DataRow(\会员等级\普通\ e.DataRow(\会员卡状态\正常\ e.DataRow(\登记时间\

e.DataRow(\过期日期\登记时间\ e.DataRow(\卡片余额\ e.DataRow(\会员积分\

这里面仅有一个地方需要解释一下

e.DataRow(\过期日期\登记时间\ 这里是什么意思呢?

过期日期是需要自动填充的,什么时候呢?

是登记日期后的365天,那么我们怎么获得这个addday呢? e.DataRow(\登记时间\后面点一个·,按tab立即就出来帮助了 这个是不是很方便

这个部分介绍一下修改的时候发生的事情,以及如何解决

1.进入单元格的时候希望通过窗口操作,其他操作一律取消;

2.双击单元格,打开一个窗口 默认情况下激活编辑功能,一旦编辑功能受限,那么激活doubleclick功能

3.希望此表作为副本表或者其他表的时候,怎么双击都可以弹出一个窗口;

我们查看一下表的属性,观察事件

知识链接:

在帮助文件中搜索“保存”,你得到哪些结果呢?是不是有您需要的? 更为复杂的不能为空的操作,先给出思路,先做一下,不懂再发问吧 1) 定义多个不能为空的字段集 2) 定义一个数据行

3) 在保存的时候遍历这个数据行,如果某列为空,就提示

按照之前的顺序,有没有字段需要设置为表达式? 帮助文件中,搜索关键词编号,你会找到下面的答案

前面已经提到,由于自动编号列_Identify的存在,我们可以删除原来的产品编号、客户编号、订单编号等列,新增一个同名的整数型表达式列,表达式设为:

[_Identify]

会员编号,需要自动增加;

因此这个,只需要设计表达式就可以了

但是在我们第一阶段的案例文件中却看到如下的代码

这个是关于自动编号美化的问题

如果学习还不是很深入,这个部分先可以不用了解,直接使用就可以了

这个帖子是会员表设计以及事件设计的最后一个部分 我们来关注一下,是不是有一些字段需要设置项目列表的?

在会员表中,等级,性别,状态需要设置为列表项目; 按照传统的方法,可以直接在列属性中设置

这种方式基本属于傻瓜式操作,大家按照需要设置就可以了 接下来,我们介绍会员表中的一些特殊的字段。

有没有字段需要特殊的设置? 1.会员照片列,需要设置为图片

这个很简单,如图

2.备注列,设置为可以单独输入;

如果你不想用备注列,希望将该列作为一个普通的字符列使用,但是希望也能用窗口形式输入内容。解决的办法很简单,只需将该列的列表项目设置为“...”

截止到现在,我们的第一张表已经成功创建了;而且具备了基本的功能。 让我们再来回顾一下:

从这个图上,你学到了什么呢?

这个表从最开始做,到完成,我最开始学习的时候花了 3天的时间去完成,理解花了3个月,不知道您现在理解了么?

对于这张表,你还有哪里不清楚的呢?

或者有更多的功能需要添加? 欢迎您交流!

正如PPT中所述,千万不要一开始就大而全,具备基本的功能后再考虑其他! 至此,第一章节结束!

第二章,

第一部分,快速建立会员充值表,并设置表事件

1)会员充值表的表结构,如图(同时设置其各个字段的类型)

我们还是按照步骤来做吧 系统设置的预见性

系统设置的预见性——增加时候的事件

当添加一条新的充值记录的时候,各个字段的状态 充值编号,自动增加;

会员卡号,默认为主表的会员卡号; 支付金额,赠送金额,默认0;

充值金额为:支付金额+赠送金额;(这个需要即时呈现,因此需要用表达式,否则用代码)

支付时间:为当前时间: 操作类型:默认为充值操作 操作人:为系统登录用户

备注:特定格式 操作人,时间,为,某人 ,执行,操作类型,金额为;(其中),这个部分不需要即时显示,采用代码既可 上述是分析的结果,现在我们来实现这个功能 充值编号:

设置表达式,为[_identify],同时进行美化,代码如下

'CZ' + SubString('000000', 1, 6 - Len(Convert([_Identify],'System.String'))) + Convert([_Identify], 'System.String')

支付金额,赠送金额,支付时间,操作类型,操作人的设置: 'e.DataRow(\支付金额\ e.DataRow(\赠送金额\) = 0

e.DataRow(\支付时间\) = Date.Today e.DataRow(\操作类型\) = \充值操作\ e.DataRow(\操作人\) = User.Name 充值金额,计算方法为:

充值金额 = 支付金额 + 赠送金额

这个因为需要即时显示出来,所以用表达式比较靠谱 系统设置的预见性——编辑修改的候的事件

1.进入单元格的时候希望通过窗口操作,其他操作一律取消;

2.双击单元格,打开一个窗口 默认情况下激活编辑功能,一旦编辑功能受限,那么激活doubleclick功能

3.希望此表作为副本表或者其他表的时候,怎么双击都可以弹出一个窗口;

我们查看一下表的属性,观察事件

此主题相关图片如下:43.png

这些事件,主要涉及的是编辑的控制,我们需要的是双击单元格的时候,取消其默认的编辑功能,同时打开某个窗口。方法如下:

取消默认的编辑:

当我们打开prepareedit的时候,自动弹出帮助文件

PrepareEdit

准备编辑单元格的时候执行。 e参数属性:

Table: 准备编辑的表 Row: 准备编辑的行 Col: 准备编辑的列

IsFocusCell: 逻辑型,是否是焦点单元格

Cancel: 逻辑型,默认为False,设为True取消编辑。

重要提示:千万不要在PrepareEdit事件显示Messagebox这样的对话框,因为每次进入单元格就会出现提示,这样会导致死循环的出现。

在prepareedit中,写入: e.Cancel = True

双击一个单元格,打开一个窗口:

将DoubleClick事件代码设为:Forms(\窗口1\

系统设置的预见性——保存时候的事件

按照第一章节的讲述,需要设置的事件可能有几个类型 1)某些字段不能为空

2)保存的时候删除一些为空的数据行

其实,我们细分发现,这两个其实有矛盾的,既然已经显示某些字段不能为空,怎么会有为空的数据行呢?这里只是作为学习的一种演示。

按照第一章节的介绍,我们很容易的设置某些字段为空,这里不细讲了,假如我们设置“会员姓名”,“充值金额”不能为空,代码如下 If e.DataRow(\会员姓名\) = \ Then

MessageBox.Show(\这个字段不能为空\) End If

保存的时候需要删除,会员姓名为空的数据行,怎么处理呢? 通过查询帮助关键词“删除符合条件的行”,得到结果

DeleteFor

删除符合条件的行。 语法:

DeleteFor(Filter) 我们的代码如何写呢? Deletefor(“[会员卡号] is null ”)

为什么会这么写?

首先,我们关注这个结构:DeleteFor(Filter),

其中的filter是一个条件表达式,既然是表达式,那么必须用双引号括起来。 至于[,那个非必须的,当然我们也可以写成 Deletefor(“会员卡号 is null ”)

关于空值和非空值,为了避免以后再出问题,总结帮助文件得出结论如下:

一般情况下,尽量采用 is null 和 isnot null ,其他的可以不考虑;

具体细节请参见帮助文件对于空值的描述!

如果大家觉得,写条件表达式还是比较有困难的话,推荐大家一款免费的好用的,评价度极高的辅助软件【EBQ】,可以帮助大家! 截图如下:

依靠这个软件,基本的条件表达式应该没有什么问题了。 第二章,

第一部分,快速建立会员充值表,设置其他属性(表达式、列表项目、特殊字段) 参考步骤图

此主题相关图片如下:543.png

这里有一点需要提出来讲一下:

备注字段的设置,我们需要当充值金额发生变化的时候,备注列能显示,[某人何时为某人充值了多少钱?]

这个自然语言可以转化为以下的计算机语言:

充值人 + 时间 + 被充值人 + 充值金额

这之间的 + ,在计算机语言中用 & 来替代,具体请参考帮助文件中的字符串连接章节

计算机语言如下:

充值人 & 时间 & 被充值人 & 充值金额

接下来,我们来获取这些值。

充值人, e.datarow(“操作者”),也可以用系统 变量 user.name 时间,e.datarow(“充值时间”),元可以用系统变量date.today() 充值金额,e.datarow(“充值金额”)

被充值人,按照原理来讲,应为,e.datarow(“被充值人“) 但是这个数据却提示报错,为什么呢?

因为在数据表中,根本不存在“被充值人”这个数据列 那怎么办呢?

这个问题先留着到下一个章节的时候再讲述。

至此,会员充值表创建完成,基本的事件功能也设置完毕 第二章,

第二部分,快速建立会员消费表,并设置表事件

系统设置的预见性——增加时候的事件 (这个部分涉及的知识点较多,请大家多多留意) 我们先观察一下会员消费表的表结构及字段情况

此主题相关图片如下:1.png

当我们添加一个消费记录的时候,会出现什么情况?哪些部分是需要我们特别注意的地方呢?

1.消费编号按需要进行自动编号; 解决的办法是什么呢?设置为[_identify] 2.消费日期,需要添加的时候自动生成;

自动生成很简单,用系统代码(已经多次提到date.today()); 3.消费金额,是计算会员本次消费产品的金额总和;

这里也许有些困惑了,都不知道消费什么产品怎么知道总金额呢? 此处暂时留下第二个问题;

4.折扣,需要根据会员的卡号自动从会员表获取;

一般情况下,我最开始的想法就是像Excel一样,直接引用不就可以了吗? 但是怎么做呢?毫无头绪。等会讲述。 5.折后金额,是【消费金额】*【折扣】 可以通过表达式计算,也可以通过代码计算;

这里注意一下区别,表达式是立即显示的,代码不是即时显示的(我的理解) 6.备注列,[会员于什么时候,充值了多少钱?] 这里需要将自然羽然转化为计算机foxtable识别的语言 7.会员卡号需要自动从附表中继承。 也就是从会员表引用。

这里有几个重点,大家突出学习一下 一,跨表引用数据; 二,表间的关联设置;

现在我们打开表属性,为几个简单的列设置属性

此主题相关图片如下:11.png

我们关注到,消费金额、折扣、备注列我们暂时无法去做。 这个时候,我们考虑到表的关联问题; 在帮助文件中搜索关键词“表间关联”

我们按照帮助设置一下,会员表和会员消费表之间的关联。

此主题相关图片如下:22.png

这个时候,我们发现一个很大的问题,关联表的列选中中,根本不存在。会员卡号这个一个列。头大了吧。

回想一下,我们刚刚是不是把会员表中的会员卡号和会员消费表中的卡号都设置成了 [_identify],这个是表达式。 再看看帮助, 提示:

1、表达式列不能作为关联列使用。

2、父表关联列和子表关联列的数据类型必须相同。

3、如果你的项目中有较多的表和关联,那么千万不要用po、co这样过于简洁的关联名称,而应该使用可读性更强的名称,例如“产品_订单”、“客户_订单” 看看帮助第一点:表达式列不能作为关联列使用。 难道这么好的东西我们却无法使用? 这个时候解决的办法有两个 1, 放弃使用自动编号

2, 让这个自动编号列成为正常列

第一种方法是我们不希望做的。但是如何使一个表达式列成为正常列呢? 能不能再建立一个列,让这个正常列获取那个表达式列的数据? 获取某行某列的数据,我们已经知道啦,e.datarow(“列名”),是不是? 那么现在只需要将这个值赋予一个正常列不就可以了。

好,这个表达式列是自动添加的,那么当这个列添加完成之后,我们将他的值写到一个正常列,这个时候,我们的代码如下

e.DataRow(\会员卡号\) = e.DataRow(\会员编号\) 这样是不是蛮简单的。

在打开关联表设置,我们是不是在会员表中看到了“会员卡号”这么一列呢?

同样的办法,我们将已经做过的几个表的自动编号,凡是涉及到以后要设置关联的地方全部都设置为正常列

e.DataRow(\消费编号\) = e.DataRow(\消费编号公式\) e.DataRow(\充值编号\) = e.DataRow(\充值编号公式\)

按照这样的方法,我们设置了会员表和会员消费表之间的关联。

此主题相关图片如下:33.png

在如上的下半部分图中,可以直接对某个会员进行消费操作。 这样是不是很容易?

紧接着,我在回到字段设置的最初。 关于折扣列的设置。

既然折扣列需要从会员表取值,那么属于跨表引用的问题。

在帮助中搜索“跨表引用”

里面详细介绍了,引用的两种方法 1, 建立关联,用表达式引用 2, 直接用代码 这里我们都介绍一下。

用表达式的方法,简单易行。

我们在会员消费表中建立一个列,折扣表达式

此主题相关图片如下:44.png

表达式如下

Parent(会员表_会员消费表).折扣

当我们设置完成之后,回到会员表,你在关联表中增加一行数据,你看看您发现了什么?

此主题相关图片如下:55.png

折扣表达式列是不是自己出来了?

用代码的方法,可靠,不需要建立任何关联,也就是说,你想在哪个数据表中取数,都没有任何问题。

'以下的代码需要去做的,在会员表中查找当前的会员卡号,然后将会员表的折扣写入到本表的折扣列中

1,Dim dr As DataRow

2,dr = DataTables(\会员表\).Find(\会员卡号 = '\ & e.DataRow(\会员卡号\) & \)

3,If dr IsNot Nothing Then

4, e.DataRow(\折扣\) = dr(\折扣\) 5,End If

6,MessageBox.Show(dr(\折扣\))

观察第一行数据,这里是定义一个数据行,既然是在数据库中操作,那么免不了就要定义datarow了

第二行,是查找语句,是最关键的地方,意思是从会员表中查找 会员卡号 等于当前 会员卡号的一条数据;

关于find语句本身简单,但是条件却比较复杂。 Find(Filter,Sort,Index)

Filter是表达式,当然用“”括起来

会员卡号 = '\ & e.DataRow(\会员卡号\) & \ 会员卡号 这个地方,是列名 ,不用解释了 后面的地方为什么用 单引号呢?

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

实际上应该为 会员卡号 = ‘ 需要查找的内容 ’

而’ 和需要查找的内容之间是字符需要用 & 连接 既然是表达式,所以又需要一个双引号 于是分开这样看: 会员卡号 = ‘ “ & e.datarow(“会员卡号”) & ” ’ 找到结果之后,立即将会员表的折扣赋值给当前行的折扣列。

接下来,我们关注本表的最后一列,备注列。 先贴出代码:

e.DataRow(\备注\) = Date.Today & e.DataRow.GetParentRow(\会员表\)(\会员姓名\) & \消费了\ & e.DataRow(\折后金额\) & \元\

这串代码其实很容易理解,中间是字符连接符,其中有一点,提出来说明一下。 e.DataRow.GetParentRow(\会员表\)(\会员姓名\)

因为设置了关联,那么当前行的父表就有对应的行,引用父表对应行,直接用getparentrow。 第二章,

第二部分,快速建立会员消费表,并设置表事件 系统设置的预见性——修改编辑事件 系统设置的预见性——保存事件

这两个部分在之前的两张表中有过详细的描述,这里就做过多的说明了。 大家按照原来介绍的方法去设置就可以了 第二章,

第二部分,快速建立会员消费表,设置其他属性(表达式、列表项目、特殊字段) 其他事项——表达式

这里涉及到引用父表数据和统计子表数据的知识点。

大家先看看帮助,回头有详解。 代码如下:

消费金额 = sum(Child(会员消费表_会员消费明细表).合计金额) 折扣 = Parent(会员表_会员消费表).折扣

其他事项——项目列表 此表中没有项目列表需要设置

其他事项——特殊字段 主要是备注列,已经做过解释

至此,关于我们的第三张 “ 会员消费表” 创建完成,并已经设置了基本是事件。

接来下的两张表基本都根据前面讲述的知识点进行设置,讲述的速度回快一点。

配合案例,应该比较容易理解,大家有什么不明白的可以在论坛发帖。 第二章,

第三部分,快速建立消费明细表和产品表,并设置表事件

创建会员消费明细表,如图

此主题相关图片如下:01.png

创建产品表,如图

此主题相关图片如下:02.png

说明:这两个表本身很简单,没有什么需要特殊设置的。真正的难点在于如何弄清楚两个表之间的关系。

我们还是按照夕然的模式进行分析。

对于产品表,基本上没有需要特别说明的地方,建议大家先把产品表建立完成。 对于消费明细表,主要消费来自于产品表;

我们主要关注消费明细表的设置;

会员消费表之系统设置的预见性——增加时候的事件 当产生一个新的消费明细的时候,有如下的列发生变化: 1.消费编号,需要继承会员消费表的消费编号 这里只需要通过关联设置即可;

2.产品名称,希望能够模糊输入或者下拉选择(这个是本节的重点讲述内容) 3.当模糊输入产品名称后,其他的列希望能自动输入(这个是本节的重点讲述内容) 4.产品数量,就是另外一个需要手动输入的内容; 这个无须多讲了

5.合计金额为表达式列,自动计算 这里只需要设置表达式即可;

要求:在单元格输入的时候,能自动弹出一个窗口,能进行模糊搜索,输入产品名称之后,自动填入单价信息。

我们来分析这个需求,其实有两个信息需要去解释:

1. 自动弹出窗口,能进行模糊搜索,将搜索的结果填入产品名称字段 2. 输入产品名称之后,自动填入相关信息; 第一个问题:

根据帮助文件,搜索自定义录入界面;

帮助文件已经写得非常详细了,我把心得给大家分享一下。

这里我主要参考 自定义录入界面三。界面如下:

此主题相关图片如下:34.png

当我们点击产品列进行输入的时候,就会自动弹出一个窗口 首先设计一个下拉窗口

这个窗口含一个表,这个表 通过 单元格的输入情况 进行显示 我们将这句话,变成计算机语言 在dropdownopen中设计如下

Dim txt As String = e.Form.DropDownBox.Text Dim tbl As Table = Tables(\窗口1_Table1\) If txt = \ Then

Tables(\窗口1_Table1\).Filter = \ Else

txt = \ & txt & \

tbl.Filter = \客户ID Like \ & txt & \公司名称 Like \ & txt & \地址 Like \ & txt & \联系人 Like \ & txt End If

e.Form.DropDownBox.Select() '将输入焦点返回下拉列表框

这样下拉窗口显示后,会自动根据下拉列表框的内容,筛选出可能的客户,并将输入焦点返回到下拉列表框。

这个是帮助源文件,大家可以根据实际情况进行设置 接着,双击某行数据,这个行数据就会填充到当前的单元格。 首先,双击之后这个窗口关闭,执行关闭代码 Forms(\窗口1\).DropDownBox.CloseDropDown() 这样在下拉窗口双击某个客户,就会关闭下拉窗口。 关闭的时候执行另外一个操作,将选择的值,填入到单元格 将窗口的DropDownClosed事件代码设置为: If e.Selected Then '如果选择了值

Dim tbl As Table = Tables(\窗口1_Table1\) If tbl.Current IsNot Nothing Then

e.Form.DropDownBox.Value = tbl.Current(\客户ID\) End If

e.Form.DropDownBox.CloseDropDown() End If

这样关闭下拉窗口后,可以自动将选定客户的客户ID输入到下拉列表框中。

在我们的系统中,一样类似的设置,输入产品名称之后,自动填入单价信息。 其他,更为详细的设置,请参见帮助文件。这里只穿针引线。

第二个问题,就是当输入产品名称之后需要自动填入其他相关信息;

看起来似乎很复杂,其实就是将窗口的当前行的某列输入到表中当前行的某列吗? table().current(a) = 窗口.current(a) 类似这样的做法。

其实我们在之前学习过,利用表达式的方法获取数据的技术,这里当然也可以用find 只不过两张表同时为当前表,你看得见的,就不用find了 类似这样

如果除了客户ID列,还要同时从客户表选择其它多列内容输入到订单表,可以将DropDownClosed事件代码改为: If e.Selected Then '如果选择了值

Dim tbl As Table = Tables(\窗口1_Table1\)

If tbl.Current IsNot Nothing Then

e.Form.DropDownBox.Value = tbl.Current(\客户ID\) Tables(\订单\).Current(\其它列1\) = tbl.Current(\其它列1\) Tables(\订单\).Current(\其它列2\) = tbl.Current(\其它列2\) Tables(\订单\).Current(\其它列3\) = tbl.Current(\其它列3\) End If

e.Form.DropDownBox.CloseDropDown() End If

这样设置之后,会员消费明细表,增加事件就完成了

关于会员消费明细表中的编辑、保存事件,大家如果有需要就按照之前的方法进行设置,这里不再细讲了。 这个部分主要介绍一下

会员消费明细表的其他属性设置,包括特殊字段,表达式列,项目列表等 1,消费编号列,需要自动增加

这里重点强调一下,为什么有了消费编号列,为嘛还要添加一个 做辅助列 ?(主要是为了关联方便)

2,合计金额需要即时显示,因此设置为 表达式就可以了

至此,会员表,会员充值表,会员消费表,消费明细表,均已经创建完成,产品表属于基本的内容,不做讲述了。到现在,这几张表已经具备操作的基本的功能。 各个表之间的关联也已经完成; 其实软件的核心部分已经突出了 不知道您做的怎样了?

接下来的部分,主要围绕这几张表来展开。

第三章,分析各表之间的关系,建立必要的关联设置

实话说,当初狐表最吸引我的地方也许就是这个地方了,所以要单独提出来讲述一下。 表间的关联看似很简单,但是在狐表中的显示方式我觉得非常的方便。一个主表可以和任意多的子表进行关联,同时在主表的窗口中显示子表相关信息。

在我们的这个系统里涉及到几个关系:

会员表和充值表的关系,会员表和消费表的关系,消费表和消费明细表的关系,消费明细表和产品表的关系。前两个关系通过会员卡号关联,消费表和消费明细表通过消费编号关联,明细表和产品表通过产品编号关联。

设置本身比较简单,不细讲了,这里主要提出说明三点。1,表达式列是不能作为关联列的,在选择的地方根本没得选,2,关联列的类型要一致,不然关联会出错。3,万一碰到关联删除不掉的情况,我有个办法就是先改名,再删除。

当我们设置好关联之后,就可以在各个主表中看到相关关联的表了。

如图:

此主题相关图片如下:1.png

下图是会员表主表显示的关联表

此主题相关图片如下:2.png

下图是消费表和明细表之间的关联显示

此主题相关图片如下:3.png

这里需要在回顾一下为什么在案例中要设置那么多的辅助列了。 第四章[设置简单的导航菜单及窗口]

导航,其实就是菜单。菜单实现的方式有很多种,最简单的莫过于用数据表的标签来实现了,而这根本不需要我们进行学习,Excel本身也是这样的,不是?

为了让这些导航功能更为具体,我想到的有几种方式:共有窗口+ 任务列表;共有窗口+导航栏;共有菜单+菜单;纯窗口的方式; 在这里,作为初学,我们采用共有窗口+任务列表的方式来实现导航; 首先创建一个共有窗口:

此主题相关图片如下:1.png

取名字为导航。

在窗口中加入一个topicbar任务栏控件。 参考帮助文件 topicbar的设置;

此主题相关图片如下:2.png

这样设置的好处是简单明了。同时设置每个任务的事件,代码如下: Select Case e.Link.Name Case \任务一\

'在此加入相应的代码 Case \任务二\

'在此加入相应的代码 Case \任务三\

'在此加入相应的代码 Case \任务四\

'在此加入相应的代码 End Select

在这个例子中,我采用的方法是偷懒才采用模板套用的方法,即套用狐表介绍文件.table 这样我们只用修改部分连接名称就能换成自己的窗口了。 这里特别需要讲述的是每个连接点击之后会发生的事件。

我们分析一下窗口afterload事件

此主题相关图片如下:3.png

第一部分,主要是风格的设置,如果不是很了解,复制就可以了 第二部分,是设置主任务栏的。

第三部分,是设置各个主任务下面的分任务的;

当我们进行如下的设置之后,再切换主表的时候,这个共有窗口是不是就显示出来了? 紧接着,我们开始设置,这个任务栏的事件;

此主题相关图片如下:4.png

这个时候,我们点击任务栏按钮,会出现TopicLinkClick事件,我们可以根据模板文件进行修改

此主题相关图片如下:5.png

Select Case e.Page.Name Case \会员管理\

Select Case e.Link.Name Case \会员登记\

MainTable = Tables(\会员表\

MessageBox.show(\请点击鼠标右键新增一条会员信息!\

Case \会员列表\

MainTable = Tables(\会员表_查询表\ MessageBox.Show(\请查看会员列表信息!\

上面显示黄色底纹的部分,也就是我们需要修改的部分;

意思就是,当我们页面的名称为“会员登记”的时候,主表切换到“会员表”,即maintable = table(“会员表”);其他的类似设计

按照这样的方法,我们就可以完成基本简单的页面导航了。

完成的效果如下图:

此主题相关图片如下:演示.gif

现在是不是通过简单的导航取代了狐表本身的表的标签功能? 希望你也可以做到。

五章[完善各表的事件以及设置简单的查询表]

其实系统做到这里,基本的框架是出来了,但是还有很多问题,不知道大家有没有发现。 我们一张张的表进行改进和完善。

本文来源:https://www.bwwdw.com/article/1ikw.html

Top