Foxtable(狐表)用户栏目专家坐堂 → [原创]菜鸟也能用foxtable开发自己的应用程序,图文视频教程[连载结束,整理至1楼]


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

主题:[原创]菜鸟也能用foxtable开发自己的应用程序,图文视频教程[连载结束,整理至1楼]

帅哥哟,离线,有人找我吗?
夕然
  171楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/24 23:57:00 [只看该作者]

第四章[设置简单的导航菜单及窗口]

导航,其实就是菜单。菜单实现的方式有很多种,最简单的莫过于用数据表的标签来实现了,而这根本不需要我们进行学习,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
按此在新窗口浏览图片


现在是不是通过简单的导航取代了狐表本身的表的标签功能?

希望你也可以做到。


案例文件 下载


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:会员系统第六阶段必要的导航.table



[此贴子已经被作者于2013-1-25 0:20:26编辑过]

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


加好友 发短信
等级:婴狐 帖子:9 积分:153 威望:0 精华:0 注册:2012/12/26 23:15:00
  发帖心情 Post By:2013/1/25 0:13:00 [只看该作者]

好好学习 学习啊

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


加好友 发短信
等级:一尾狐 帖子:439 积分:3850 威望:0 精华:0 注册:2012/10/12 5:20:00
  发帖心情 Post By:2013/1/25 4:19:00 [只看该作者]


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


加好友 发短信
等级:婴狐 帖子:66 积分:858 威望:0 精华:0 注册:2011/9/2 12:59:00
  发帖心情 Post By:2013/1/25 5:11:00 [只看该作者]

学学图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:9 积分:182 威望:0 精华:0 注册:2011/12/16 6:51:00
继续往下看  发帖心情 Post By:2013/1/25 7:16:00 [只看该作者]

继续往下看

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


加好友 发短信
等级:六尾狐 帖子:1359 积分:12010 威望:0 精华:0 注册:2012/3/5 11:32:00
  发帖心情 Post By:2013/1/25 10:24:00 [只看该作者]

多谢楼主奉献,努力学习中


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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/25 10:51:00 [只看该作者]

第五章[完善各表的事件以及设置简单的查询表]
其实系统做到这里,基本的框架是出来了,但是还有很多问题,不知道大家有没有发现。
我们一张张的表进行改进和完善。
第一张表:会员表
我希望完成更高级的功能有:
1,希望输入会员的时候,一旦选择会员等级,就立即自动调用折扣
2,对会员信息进行修改的时候,只要等级发生变化,那么折扣也应该发生变化
3,原来基于会员表的信息,不再进行计算,即新的折扣只对新的消费信息起作用;老的还是保持不变;
4,手机号码列应该为11位,按照格式输入,如果不是固定格式,那么就不让他输入
5,推荐人字段,应该为公司员工,系统默认为公司客户,按照需要进行选择
各列的功能,我能想到的就这些了额,不知道您还有没有其他的想法呢?
我们先来解决这些问题。
问题1,2,根据输入的等级,引用折扣,修改的时候,自动引用折扣
这个问题涉及两个知识点,这个折扣在哪里引用?(重新创建一张等级表);从这个等级表中引用数据(跨表引用);
创建新的等级表,这个就不再讲了。主要说一下,跨表引用的问题。
跨表引用,有两个基本的实现方式,第一,设置关联,直接用parent(表名)引用关联的数据,第二,不用设置关联,直接用find查找对应的条件,然后显示数据;
代码如下

If e.DataCol.Name = "会员等级" Then '如果更改的是会员等级列

    If e.DataRow.IsNull("会员等级") Then '会员等级是否为空

        e.DataRow("折扣") = Nothing '如果为空,则折扣清零

    Else

       

        Dim dr As DataRow

        dr = DataTables("等级设置").Find("会员等级 = '" & e.DataRow("会员等级") & "'")

        If dr IsNot Nothing Then

            e.DataRow("折扣") = dr("折扣")

        End If

       

    End If

End If


这个代码接近于自然语言了,很容易理解。



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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/25 10:52:00 [只看该作者]


因为是数据发生变化的时候,要发生的事件,因此,这段代码写在会员表的 datacolchanged中。

问题3,旧的信息按照原来的折扣,新的信息,按照新的折扣;

其实当我们解决完问题 1,2的时候,这个功能已经实现,除非你需要在更改某个会员的等级;

那我们有必要了解一下,如果某些场合,需要让这些数据全部更新的话,怎么处理呢?


在等级设置表中如下datacolchanged设置


If e.DataCol.Name = "折扣"
    
Dim Filter As String = "[会员等级] = '" & e.DataRow("会员等级") & "'"
    
Dim drs As List(Of DataRow) = DataTables("
会员表").Select(Filter)
    For
 Each dr As DataRow In drs
        
dr("
折扣") = e.DataRow("折扣")
    Next
End
 If

 


也就是说,在等级设置表中,如果折扣列发生变化,那么就在会员表中找到所有的与该等级对应的行,遍历所有找到的行,然后将新的折扣替换。


这句话,说的有些拗口,大家模拟理解一下。


问题4,关于手机号码的问题,涉及掩码。

这个在列属性中设置一下,如图


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

问题5,主要涉及下拉列表的问题,还是在列属性中设置,数据来源选择 数据表即可。


这样,会员表的差不多就完善了,一张具备基本功能的数据表已经完成。


接下来会介绍其他各章数据表的完善。


......




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


加好友 发短信
等级:二尾狐 帖子:501 积分:4167 威望:0 精华:0 注册:2013/1/18 13:34:00
  发帖心情 Post By:2013/1/25 15:41:00 [只看该作者]

继续跟学。

 回到顶部
帅哥哟,离线,有人找我吗?
大军1979
  180楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:3 积分:111 威望:0 精华:0 注册:2013/1/12 14:57:00
  发帖心情 Post By:2013/1/25 15:45:00 [只看该作者]

我也想学习!!!

 回到顶部