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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

菜鸟也能用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(登记时间)=Date.todaye.DataRow(过期日期)=e.DataRow(登记时间).AddDays(365)e.DataRow(卡片余额)=0e.DataRow(会员积分)=0这里面仅有一个地方需要解释一下e.DataRow(过期日期)=e.DataRow(登记时间).AddDays(365)这里是什么意思呢?过期日期是需要自动填充的,什么时候呢?是登记日期后的365天,那么我们怎么获得这个addday呢?e.DataRow(登记时间)=Date.today后面点一个·,按tab立即就出来帮助了这个是不是很方便这个部分介绍一下修改的时候发生的事情,以及如何解决1.进入单元格的时候希望通过窗口操作,其他操作一律取消;2.双击单元格,打开一个窗口默认情况下激活编辑功能,一旦编辑功能受限,那么激活doubleclick功能3.希望此表作为副本表或者其他表的时候,怎么双击都可以弹出一个窗口;我们查看一下表的属性,观察事件这些事件,主要涉及的是编辑的控制,我们需要的是双击单元格的时候,取消其默认的编辑功能,同时打开某个窗口。方法如下:取消默认的编辑:当我们打开prepareedit的时候,自动弹出帮助文件PrepareEdit准备编辑单元格的时候执行。e参数属性:Table:准备编辑的表Row:准备编辑的行Col:准备编辑的列IsFocusCell:逻辑型,是否是焦点单元格Cancel:逻辑型,默认为False,设为True取消编辑。重要提示:千万不要在PrepareEdit事件显示Messagebox这样的对话框,因为每次进入单元格就会出现提示,这样会导致死循环的出现。在prepareedit中,写入:e.Cancel=True双击一个单元格,打开一个窗口:将DoubleClick事件代码设为:Forms(窗口1).Open接下来这个部分介绍保存的时候发生的变化以及需要的事件首先,我们点击表属性,看看涉及保存的事件有哪些?其次,看看哪些属性适用于我们的系统?我们看到这里只见到有一个属性,beforesavedatarowBeforeSaveDataRow在保存某一数据行之前执行,可以在此对数据进行最终的验证。e参数属性:DataTable:返回正在保存的数据表。DataRow:返回正在保存的数据行。Cancel:逻辑型,设为True,取消正在进行的保存。而我们需要些什么呢?需求:1,保存的时候,需要部分列字段不能为空,否则就不能保存;2,被编辑的行如果状态不是保存状态,那么不能离开下一行;3,如果离开,那么对该行数据的操作就会被撤销;我们一个个的来解决!第一个问题:部分列字段不能为空,否则就不能保存;假设,会员姓名和手机号码列不能为空,那么我们可以这样做Ife.DataRow(会员姓名)=Then'假设-正在保存的数据行-的列为空值MessageBox.Show(会员姓名必须输入)'那么弹出一个消息Elsee.Cancel=True'逻辑型,设为True,取消正在进行的保存.EndIf目前阶段,我们还不会用更复杂的语句,先用这些吧接下来,我们设置手机号码不能为空Ife.DataRow(手机号码)=Then'假设-正在保存的数据行-的列为空值MessageBox.Show(手机号码必须输入)'那么弹出一个消息Elsee.Cancel=True'逻辑型,设为True,取消正在进行的保存.EndIf这样做了之后,是不是已经完成了这样的目标呢?第二个问题:被编辑的行如果状态不是保存状态,那么不能离开下一行;这个时候,我们关注的是:数据行的状态在帮助中搜索关键词“行的状态”我们来模拟一下,如果该行状态没有发生变化,那么就新增一行。Ife.DataRow.RowState=DataRowState.UnchangedThen'如果该行的状态为unchangedReturn'终止执行下面的程序ElseDimResultAsDialogResult'否则,定义一个对话框Result=MessageBox.Show(你是否需要增加一行?,提示,MessageBoxButtons.YesNo,MessageBoxIcon.Question)IfResult=DialogResult.noThenReturnElsee.DataTable.AddNew()EndIfEndIf第三个问题:如果离开,那么对该行数据的操作就会被撤销;上一节中,我们接触到对话框,当点击确定的时候就增加,否则就撤销帮助文件中搜索关键词“撤销”Reject撤销自打开文件或最近一次保存以来,对该行做出的修改。如果是新增加的行,执行此方法,会删除行。这样的描述很清楚。我们只需要加一条e.datarow.reject()即可完成任务!关于保存相关的事件,是不是很简单?你也可以操作一下,遇到不熟悉的,就翻翻帮助知识链接:在帮助文件中搜索“保存”,你得到哪些结果呢?是不是有您需要的?更为复杂的不能为空的操作,先给出思路,先做一下,不懂再发问吧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(支付金额)=0e.DataRow(赠送金额)=0e.DataRow(支付时间)=Date.Todaye.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).Open()系统设置的预见性——保存时候的事件按照第一章节的讲述,需要设置的事件可能有几个类型1)某些字段不能为空2)保存的时候删除一些为空的数据行其实,我们细分发现,这两个其实有矛盾的,既然已经显示某些字段不能为空,怎么会有为空的数据行呢?这里只是作为学习的一种演示。按照第一章节的介绍,我们很容易的设置某些字段为空,这里不细讲了,假如我们设置“会员姓名”,“充值金额”不能为空,代码如下Ife.DataRow(会员姓名)=ThenMessageBox.Show(这个字段不能为空)EndIf保存的时候需要删除,会员姓名为空的数据行,怎么处理呢?通过查询帮助关键词“删除符合条件的行”,得到结果DeleteFor删除符合条件的行。语法:DeleteFor(Filter)我们的代码如何写呢?Deletefor(“[会员卡号]isnull”)为什么会这么写?首先,我们关注这个结构:DeleteFor

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功