FOXTABLE编程

合集下载

菜鸟学习Foxtable开发

菜鸟学习Foxtable开发
菜鸟如何使用Foxtable开发管理软件
谨以此拙作谨献以给此书献给
正在学习Foxtable(狐表)的
正在迷茫着、困惑着的
又没有时间系统学习初学者们!
特别申明
本教程借鉴了大量优秀案例研究成果
在此一并致谢!
关于狐表开发
开发顺序 设计方法
开发顺序 设计方法 表相关
窗口相关 菜单相关 权限相关
开发顺序1.参考同类软件
设计顺序1.创建必要的数据表
设计顺序2.设置表与表之间的关联
设计顺序3.设计表的属性与列的属性
设计顺序4.设置必要的用户和权限
设计顺序5.创建必要的窗口
设计顺序6.创建必要的菜单
设计顺序7.为窗口控件增加事件
设计顺序8.为菜单增加事件
设计顺序9.增加必要的报表和图表
设计顺序10.设置高级权限
• Oቤተ መጻሕፍቲ ባይዱfice办公系列
基础软件
• Freemind,记录开发过程
• QBE,sql语言生成
辅助应用 • Spx,截图
其他
• irfanview • 属性查看器.table • Notepad++
建议与鼓励
1,帮助文件,不管懂不懂,先浏览一遍! 2,帮助文件,不管会不会,跟着操作一遍! 3,帮助文件再看一遍! 4,尝试做些小功能!
学习的过程从来都不是轻松的, 请一定坚持!祝大家成功!
以上有不当之处,请大家给与批评指正, 谢谢大家!
26
开发实例讲解
功能剖析 软件构思
开发顺序 设计方法 表相关 窗口相关 菜单相关 权限相关
类似软件剖析
软件功能剖析
软件菜单剖析 菜单区
您自己需要什么样的管理软件呢?

Foxtable(狐表)使用指南设计

Foxtable(狐表)使用指南设计

狐表使用指南关于菜单绝大多数的日常操作都是通过菜单来完成的,所以我们首先介绍一下Foxtable的菜单。

一、菜单的构成Foxtable的菜单和传统的菜单有所不同,它是由功能区组成的。

系统菜单默认包括日常工作、数据表、管理项目、打印输出、杂项等五个功能区;而每一个功能区又是由功能组构成的,例如日常工作这个功能区,包含剪贴板、数据、排序与筛选、数据统计、编辑、窗口等功能组;通过功能区和功能组,我们可以将各种按钮按照功能分类,有序地组合起来。

除了功能区外,菜单还包括程序菜单,快速访问栏和配置栏,如下图所示:单击"文件"按钮会出现程序菜单,程序菜单包括与文件和打印相关的命令:配置栏位于窗口的右上角:初次使用,您可能会对这种风格的菜单布局感到不适应,其实这种风格是一种趋势,越来越多的软件会采用;相信你习惯之后,肯定会感到这样的布局其实是非常方便的;例如当你完成一个管理项目的设计工作后,之后录入数据、查询、筛选、统计、打印报表等几乎所有的日常工作,都可以在菜单的日常工作区完成,无需像传统的菜单那样,需要反复选择不同的菜单。

二、按钮的类型按钮分为三种类型:1、标准按钮绝大部分按钮都是标准按钮,单击标准按钮即可执行某一项操作,例如复制、剪切、粘贴等按钮。

2、下拉按钮单击下拉按钮将出现一个下拉菜单,用以选择具体的操作,例如功能组“排序与筛选”中的“表视图”按钮。

3、组合按钮组合按钮其实就是标准按钮和下拉按钮的组合,组合按钮分成两部分,单击上半部分会立即执行某项操作,而单击下半部分,将出现一个下拉菜单,用以选择更多的类似操作。

例如“数据”功能组中的“增加行”按钮,就是一个组合按钮,单击按钮的上半部分,将直接增加一行,而单击按钮的下半部分,将出现一个下拉菜单,用以选择是增加一行还是增加多行,如下图所示:之所以专门介绍一下按钮的种类,是因为不少用户会忽略组合按钮所包含的下拉菜单,而这些下拉菜单中有不少功能是相当重要的。

Foxtable示例

Foxtable示例

Foxtable示例DataTables(表)常用属性通过DataTables集合,可以获得指定名称的DataTable(表)。

例如: Dim dtAs DataTabledt = DataTables("订单")如果要禁止编辑某个DataTable,只需将其AllowEdit属性设为False,例如: DataTables("订单").AllowEdit = False注:在命令窗口执行上述代码,你会发现订单表的左上角出现一个锁形标记,表示此表已经被锁定,不能在其中输入数据。

如果你要取消锁定表,只需将其AllowEdit属性重新设为True: DataTables("订单").AllowEdit = True下表列出了DataTable的常用设置属性,它们的用法和AllowEdit属性完全一样:属性名说明AllowEdit 是否允许修改表中数据AllowAddNew 是否允许增加行AllowClipBoa是否允许复制粘贴数据 rdAllowInitial是否允许初始化此表 ize是否允许自动增加行,也就是在最后一行的最后一个单元格按回车键时,是否自AutoAddNew 动增加一行AllowDelete 是否允许删除行AllowLockRow 是否允许锁定行AllowUnlockR是否允许取消锁定行 ow我们在编辑数据的时候,如果按回车键或Tab键,光标会向右移到下一单元格,通过下面的属性,你可以改变这种默认的光标移动方式:属性名说明EnterKeyActionDown 按回车键是否向下移到另一单元格 TabKeyActionDown按Tab键是否向下移到另一单元格例如:你希望按回车键向下移动光标,而不是向右移动,只需将EnterKeyActionDown属性设为True即可:DataTables("订单").EnterKeyActionDown = True最后三个常用的属性为:属性名说明Name 返回DataTable的名称返回一个整数,表示DataTable的类型:1 内部数据表2 内部查询表 Type3 外部数据表4 外部查询表5 临时表HasChanges 逻辑型,判断DataTable的数据是否已经被修改例如执行下面的代码,将列出所有已经修改过的DataTable: Output.Show("已经修改的数据表:") For Each dt As DataTable In DataTables1If dt.Type = 1 Orelse dt.Type = 3 ThenIf dt.HasChanges ThenOutput.Show()End IfEnd IfNext常用方法1、AddNew:在DataTable中增加一行或多行,并返回所增加的第一行。

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

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

[原创]菜鸟也能用foxtable开发自己的应用程序,图文视频教程[连载结束,整理至1楼][原创]菜鸟也能用f o xt able开发自己的应用程序,图文视频教程[连载结束,整理至1楼] Post By:2013-1-2111:04:00 [只看该作者]学习Foxtable已经有1年多了,都已经忘记曾经是怎么开始的,也已经忘记到底是什么让我坚持了下来,不管怎样,能坚持一年多,已足以证明Foxtable这个工具有着强大的吸引力和诱惑力,对于一个出身文科的我来说,需要在短时间内看到成效,这个工具确实是不二之选。

回想一年前,把那个“自动输入省市列表”的案例奉为经典!把那个“自动关联”的功能奉为传奇!为那个“自动统计”功能啧啧称奇!而如今,我自己已经可以独立完成这些基本的功能,甚至用代码实现,甚至已经很久没有再碰过Excel了,而在这个之前我每天都要反复打开Excel数几十次!不知道什么原因,自从接触Foxtable开始,运动都少了很多,坐在电脑前的时间比往常多了几倍,真是有点不可思议!看到Foxtable一步步的成长,功能一点点的完善,我很钦佩作者的坚持,感谢作者的付出,怎奈,软件的入门确实还是有点小难度,实现基本的,似乎很简单,但是一涉及到复杂一点的,没有学过编程的人,就没有了头绪,正是由于这个情况,也表示我对Foxtable的感谢,对作者的支持,我希望以自己的绵薄之力,为Foxtable的入门学习,增加一点点浅显的学习内容,让Foxtable更加容易学习,让Foxtable被更多人了解,让Foxtable被更多人采用。

于是,花了1个月的业余时间,设计了一个半成品,“会员管理系统”,作为学习的案例文件,做一个循序渐进的开发实例,在春节前为大家奉献出来,希望大家多多捧场。

本文共分九个章节进行讲述,主要是图文辅以视频的方式进行,经过2个多月的整理,现已整理完毕,特意给大家分享。

第一章,创建会员表同时为会员表设置其必要的事件1,项目介绍,1楼2,开场PPT 2,3楼3,软件介绍及下载,4,5,6楼4,第一章节所需要的文件及讲解提纲下载 7楼5,系统设置的预见性——增加时候的事件 13楼6,系统设置的预见性——修改编辑事件 14楼7,系统设置的预见性——保存事件 22楼8,其他事项——表达式 23楼9,其他事项——项目列表 24楼10,其他事项——特殊字段 24楼11,第一章总结 85楼第二章,创建会员充值表并设置必要的事件1,第二章介绍: 88楼2,第一部分:创建会员充值表,并设置表属性 89楼3,快速建立会员充值表,同时设置“系统设置的预见性——增加时候的事件” 90楼4,设置“系统设置的预见性——修改编辑事件” 90楼5,设置“系统设置的预见性——保存事件” 91楼6,设置会员充值表的其他属性 92楼7,第二章第一部分案例文件下载 93楼8,快速建立会员消费表,同时设置“系统设置的预见性——增加时候的事件” 103楼9,设置与表相关的事件(关联,关联数据引用等) 107楼,108楼,109楼,110楼10,设置“系统设置的预见性——修改、编辑”事件 111楼11,设置会员消费表的其他属性 112楼12,第二章第二部分案例文件下载 112楼13,第三部分:创建消费表,消费明细表、产品表并设置表属性 129楼14,设置“系统设置的预见性——增加时候的事件” 130楼15,设置其他属性事件 131楼16,第三部分案例下载 131楼第三章,设置各表之间的关联及表间关系1,分析各表之间的关系,设置各表的关联 147楼2,第三章需要的案例文件下载 147楼第四章,设置简单的导航菜单及窗口1,设置简单的导航菜单及窗口 172楼2,第四章需要的案例文件下载 172楼第五章,完善各表的事件以及设置简单的查询表1,第五章第一部分:完善会员表的相关事件 178,179楼2,第五章第二部分:完善会员充值表相关事件 204楼3,第五章第三部分:设置简单的查询表 205楼4,第五章第四部分:使用辅助sql工具205楼第六章[设置必要的用户及权限]1,第六章第一部分:移植优秀的用户管理模块视频过程以及案例文件下载 242楼2,第六章第二部分:用户权限模块移植视频过程及案例文件下载 258楼第七章[纯表格系统的完善和发布]1,纯表格系统的完善和发布(视频过程) 269楼第八章,设计我们的第一个窗口1,从第一个窗口开始对系统进行改头换面视频过程 319楼第九章,系统的纠错及完善1,第九章第一部分:[窗口的分类及开发顺序] 更新至342楼2,第九章第二部分:[操作类窗口——会员登记窗口设计] 更新至353楼3,第九章第三部分:[操作类窗口——会员消费窗口设计] 更新至370楼菜鸟也能用foxtable开发自己的应用程序之菜鸟学习foxtable感受(PPT)下载菜鸟也能用foxtable开发自己的应用程序整理篇(word版本)下载案例分期文件下载链接:数据库文件:已经发布的视频链接已经发布的PPT文件下载已经发布的其他辅助文件(mmap)下载:。

foxtable程序

foxtable程序

Dim Chart As WinForm.Chart'定义一个图表变量Dim Series As WinForm.ChartSeries'定义一个图系变量Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表Chart.DataSource = "表A"'设置绑定表Chart.SeriesList.Clear() '清除图表原来的图系Series = Chart.SeriesList.Add() '增加一个图系Series.X.DataField = "第一列"'X轴绑定到月份列Series.Y.DataField = "一百米"'Y轴绑定到数量列Series.Y.DataField = e.Form.Controls("ComboBox2").TextChart.VisualEffect = True'加上这一行,让你的图表更漂亮Chart.ChartType = ChartTypeEnum.Bar'图表1类型该为Bar(条形) Chart.AxisX.AnnoRotation = - 45'X轴标示逆时针旋转45度Dim Chart As WinForm.Chart '定义一个图表变量Dim Series As WinForm.ChartSeries '定义一个图系变量Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表Chart.VisualEffect = True'加上这一行,让你的图表更漂亮Chart.ChartType = ChartTypeEnum.Bar '图表1类型该为Bar(条形) Chart.ChartType2 = ChartTypeEnum.XYPlot '图表2类型该为线形Chart.DataSource = "统计表1"'设置绑定表Chart.SeriesList.Clear() '清除图表原来的图系Series = Chart.SeriesList.Add() '给图表1增加一个图系Series.Text = "数量"Series.X.DataField = "产品"'X轴绑定到产品列Series.Y.DataField = "数量"'Y轴绑定到数量列Chart.SeriesList2.Clear() '清除图表原来的图系Series = Chart.SeriesList2.Add() '给图表2增加一个图系Series.Text = "金额"Series.X.DataField = "产品"'X轴绑定到产品列Series.Y.DataField = "金额"'Y轴绑定到数量列Chart.LegendVisible = True'显示图列Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端) Chart.AxisY.Text = "数量"Chart.AxisY2.Text = "金额"。

狐表开发实例

狐表开发实例

狐表开发实例一、概述狐表是一种用于开发和管理数据表格的工具,它可以帮助用户轻松创建、编辑和分享表格数据。

本文将深入探讨狐表的开发实例,介绍如何使用狐表进行表格开发,并详细介绍其功能和优势。

二、狐表的基本功能狐表作为一个强大的数据表格工具,具有以下基本功能:2.1 创建表格通过狐表,用户可以方便地创建新表格。

只需按照指定的格式输入表格的列名和数据内容,就可以在狐表中创建一个新的表格。

2.2 编辑表格狐表提供了丰富的编辑功能,用户可以对表格的内容进行添加、修改和删除操作。

通过简单的拖拽和复制粘贴等操作,用户可以轻松地编辑表格的数据。

2.3 格式设置狐表支持对表格的格式进行设置。

用户可以设置不同列的数据类型、样式和排序规则,从而满足不同的数据处理需求。

2.4 数据分析狐表内置了一系列数据分析函数,用户可以通过这些函数对表格中的数据进行统计和分析。

用户只需输入相应的函数公式,就可以得到统计结果。

2.5 数据导入导出狐表支持将表格中的数据导出为常见的文件格式,比如CSV、Excel等。

同时,用户也可以通过导入功能将外部数据导入到狐表中进行进一步的处理和分析。

三、狐表的优势狐表作为一款开发数据表格的工具,具有以下优势:3.1 方便易用狐表提供了简洁、直观的界面,用户可以轻松上手使用。

无需编写复杂的代码,用户只需使用简单的操作即可完成表格的开发和编辑。

3.2 多人协作狐表支持多人同时对同一表格进行编辑和修改,实现了多人协作的需求。

用户可以通过共享链接或邀请其他用户加入,让团队成员共同参与表格的开发和管理。

3.3 安全可靠狐表提供了数据的自动保存和备份功能,确保用户数据的安全。

同时,狐表还支持设置用户权限,可以对表格进行访问和编辑权限的控制。

3.4 丰富的功能扩展狐表提供了丰富的功能扩展,用户可以根据自己的需求进行个性化定制。

用户可以通过插件市场获取各种功能插件,从而进一步提升狐表的功能和性能。

四、使用狐表进行表格开发的实例为了更好地理解狐表的开发过程,下面将介绍一个实际的表格开发实例。

Foxtable示例

Foxtable示例

Foxtable示例DataTables(表)常用属性通过DataTables集合,可以获得指定名称的DataTable(表)。

例如: Dim dtAs DataTabledt = DataTables("订单")如果要禁止编辑某个DataTable,只需将其AllowEdit属性设为False,例如: DataTables("订单").AllowEdit = False注:在命令窗口执行上述代码,你会发现订单表的左上角出现一个锁形标记,表示此表已经被锁定,不能在其中输入数据。

如果你要取消锁定表,只需将其AllowEdit属性重新设为True: DataTables("订单").AllowEdit = True下表列出了DataTable的常用设置属性,它们的用法和AllowEdit属性完全一样:属性名说明AllowEdit 是否允许修改表中数据AllowAddNew 是否允许增加行AllowClipBoa是否允许复制粘贴数据 rdAllowInitial是否允许初始化此表 ize是否允许自动增加行,也就是在最后一行的最后一个单元格按回车键时,是否自AutoAddNew 动增加一行AllowDelete 是否允许删除行AllowLockRow 是否允许锁定行AllowUnlockR是否允许取消锁定行 ow我们在编辑数据的时候,如果按回车键或Tab键,光标会向右移到下一单元格,通过下面的属性,你可以改变这种默认的光标移动方式:属性名说明EnterKeyActionDown 按回车键是否向下移到另一单元格 TabKeyActionDown按Tab键是否向下移到另一单元格例如:你希望按回车键向下移动光标,而不是向右移动,只需将EnterKeyActionDown属性设为True即可:DataTables("订单").EnterKeyActionDown = True最后三个常用的属性为:属性名说明Name 返回DataTable的名称返回一个整数,表示DataTable的类型:1 内部数据表2 内部查询表 Type3 外部数据表4 外部查询表5 临时表HasChanges 逻辑型,判断DataTable的数据是否已经被修改例如执行下面的代码,将列出所有已经修改过的DataTable: Output.Show("已经修改的数据表:") For Each dt As DataTable In DataTables1If dt.Type = 1 Orelse dt.Type = 3 ThenIf dt.HasChanges ThenOutput.Show()End IfEnd IfNext常用方法1、AddNew:在DataTable中增加一行或多行,并返回所增加的第一行。

foxtable学习

foxtable学习

1、若保存,则无法还原删除的行。

(见其他中的回收站)2、锁定是不让其修改冻结是位置不变。

3、只有在同步后,所看到的是最新数据。

4、加载可以应对库中数据庞大,只取部分的情况5、本表的搜索、设定都比excel强大6、切换是在执行某些不改变数值程序等的情况下回到原界面的功能(即窗口间的切换)7、表示图可以在删选后保存其表格数据,方便其以后的保存及使用(表格改动后灰跟随着改变)8、显示冗余值:把重复的显示出来,可删除,之后切换,剩下的都不重复。

9、一个汉字占两个字符,故在表格设定时,要注意其长度10、加载树是指窗口所要看到的行列,而筛选树是类似于搜索引擎的功能。

→加载:从数据库中取数据筛选:在表A的数据上提取,不经过数据库。

11、注意本季度(不累计)与截止本季度(累计)的区别。

12、快速清零是将零隐藏(只对一列纯数有效)13、零时表会在重新加载后消失(永远是空表)。

其列都是红色即被更改的意思。

14、查询表中可以敲击代码eg-where 产品=’PD01’此代码仅看,有此功能,而查询表是在原表中查询某些条件并做成新表可同eg- select *from {某表}where 某项目= ‘某项’(注:只能由大级到小级,而不是同级)或Eg- select * from {某表}where 某项目= ‘某项’and 某项目= ‘某项’(可并列)15、表名是使用时的代称(大名),而标题是显示的代称(小名)16、复制表只适用于数据表,而不是查询表,可通过导入/导出解决。

且复制表也带查询分类功能[某项目] = ‘某项’→其中and不可用,如此,即复制两次,达到相同效果17、自定义样式(对于整张表而言),可自己设定,使用样式可在表属性中设定-事件-绘制-drawcell中。

注:对于这种标注,还可以通过编写代码来将所需要的标注某样式If roro(“单价”)>25 thene.style = “样式1”end if.18、表属性是对表操作的权限,以及对表做了什么19、多重表头标题中得到_1得到_2 (一样的就合并了)(可连续多用,即连续叠加)20、列属性/列表项目/自定义项目等可以做下拉菜单,包括数据表取值。

菜鸟学习Foxtable开发

菜鸟学习Foxtable开发

逻辑型
用于存储布尔值, 即真或假。
数值型
用于存储数字数据, 包括整数、浮点数 等。
日期型
用于存储日期和时 间数据。
空值型
用于表示缺失或未 定义的数据。
变量和常量
变量
用于存储数据的容器,可以随时修改其 值。
VS
常量
用于存储固定值,一旦定义后不能修改。
控制流语句
01
02
03
条件语句
根据条件执行不同的代码 块。
02
使用`ft.DataFrame.fillna()`函数填充缺失值 。
03
使用`ft.DataFrame.astype()`函数将数据转 换为指定类型。
04
使用`ft.DataFrame.replace()`函数替换特定 值。
数据分析
使用 `ft.DataFrame.describe( )`函数获取数据的描述性 统计信息。
处理策略
根据实际情况选择合适的处理策略,如填充缺失值、删除含有缺失 值的行或列、使用插值方法等。
使用Foxtable函数
Foxtable提供了多种函数来处理缺失值,如`fillna()`、`dropna()` 等。
如何处理异常值?
识别异常值
01
通过可视化数据、使用统计方法或基于业务逻辑判断
来识别异常值。
报表生成
Foxtable可以用于生成各种报表,如 销售报表、财务报告等,方便用户进 行数据可视化展示。
数据处理
Foxtable支持对表格数据进行各种处 理操作,如数据清洗、转换等,方便 用户进行数据处理。
02
Foxtpip
访问Python官网下载并安装Python 解释器,建议选择最新稳定版本。

Foxtable常用代码汇总

Foxtable常用代码汇总

Next 按钮或菜单 列出订单表中所有列的名称 12 DataCol 增加临时列,并可给临时列设置表达式 GetType (Double ), "[ 数量] * [ 单价] * (1 - [ 折扣 ])") 目文件后,将不复存在订 单 ").DataCols.Add ("金 额 ", 按钮或菜单 通过代码增加的临时列,在重新打开项13 DataCol 删除临时列 If DataTables (" 订单 ").DataCols.Contains (" 金额") Then DataTabIes ("订单").DataCoIs.DeIete (" 金额")End If 按钮或菜单 通过 Add 方法增加的临时列,可以用 Delete 方法删除14 DataCol 一列设公式,另列得结果 If = " 第一列 " Then If e.DataRow.IsNull (" 第一列 ") Thene.DataRow (" 第二列 ") = Nothing Elsee.DataRow (” 第二列")=EvaI (e.DataRow ("第一列 ”),e.DataRow ) End IfEnd IfFoxtable 常用代码汇总 1Col 打开列窗口 With Tables (" 员工 ").Cols ("照片").OpenWindow () .Cols ("备注").CIoseWindow () End With 按钮或菜单 2 Col 关闭列窗口 With Tables (" 员工 ") .Cols ("照片").OpenWindow () .Cols ("备注").CIoseWindow () End With 按钮或菜单 3 Col 移动列到指定位置 .Cols ("日期").Move (0) .Cols ("客户").Move (1) .Cols ("产品").Move (2)End With 4 With Tables (" 订单 ") 按钮或菜单 将日期、客户、产品移到前三列的位置冻结列 CurrentTable.Cols.Frozen = 2 按钮或菜单 冻结前两列 取消冻结列 CurrentTable.Cols.Frozen = 0 按钮或菜单 从 Table 中移除指定的列 If Tables (" 订单 ").Cols.Contains (" 折扣 ") Then Col Col Col Tables ("订单 ”).Cols.Remove (” 折扣")End If 按钮或菜单 在订单表中移除折扣列Tables ("订单”).Cols.Remove (”折扣",”金额")按钮或菜单 锁定某表某列 DataTables ("订单 ”).DataCols (” 折扣 ”).AIIowEdit = False 按钮或菜单 Col 一次移除多列 DataCol 按钮或菜单 9 菜单 DataCo l 取消锁定某表某列 DataTables (” 订单 ”).DataCols (” 折扣 ”).AIIowEdit = True 按钮或 10 DataCol 数量 * 单价 " DataTabIes ("订单").DataCoIs ("金额").Expression = ” 数量 属性只对表达式列有效 11 DataCol 返回列的名称 Output.Show ( ) 动态地修改表达式列的计算公式 For Each dc DataTabIes ("订单 ”).DataCols (” 金额").Expression =" * 单价 * (1 - 折扣 )" 按钮或菜单 ExpressionAsDataCol InDataTables (" 订 单").DataColsDataTables ("18 DataRowDataTable .AddNew () ' 增加一行 End With 按钮或菜单 19 DataRow 删除指定位置的行 .Delete (0) ' 删除第一行 End With按钮或菜单20 DataRow 清除所有行With DataTables ("单 ”).DataRows .Delete (0) ' 删除第一行 End With按钮或菜单21 DataRow 按日期列求月份 Dim dr AsDataRow =e.DataRow if =" 开始时间 " Thenif dr.IsNull (" 开始时间 ") = false Thendr (" 月") = dr (" 开始时间 ").Month Elsedr (" 月 ") = Nothing End IfEnd If 表 DataColChanged 事件 22 DataRow 新增行编号自动加1e.DataRow (” 编号")=pute ("Max (编号)")+ 1DataRowAdding 事件 假定表中有一个编号列,希望新增行的时候,编号列能够自动加1这个例子其实没有什么意义的,对于外部表使用自动增量主键列,对于内部表使用表达式列引用内部编 号列 “_Identidy 是”更,好的选择。

Foxtable通用代码汇总

Foxtable通用代码汇总

Foxtable常用代码汇总1 Col 打开列窗口With Tables("员工").Cols("照片").OpenWindow().Cols("备注").CloseWindow()End With 按钮或菜单2 Col 关闭列窗口With Tables("员工").Cols("照片").OpenWindow().Cols("备注").CloseWindow()End With 按钮或菜单3 Col 移动列到指定位置With Tables("订单").Cols("日期").Move(0).Cols("客户").Move(1).Cols("产品").Move(2)End With 按钮或菜单将日期、客户、产品移到前三列的位置4 Col 冻结列CurrentTable.Cols.Frozen = 2 按钮或菜单冻结前两列5 Col 取消冻结列CurrentTable.Cols.Frozen = 0 按钮或菜单6 Col 从Table中移除指定的列If Tables("订单").Cols.Contains("折扣") ThenTables("订单").Cols.Remove("折扣")End If 按钮或菜单在订单表中移除折扣列7 Col 一次移除多列Tables("订单").Cols.Remove("折扣","金额") 按钮或菜单8 DataCol 锁定某表某列DataTables("订单").DataCols("折扣").AllowEdit = False 按钮或菜单9 DataCol 取消锁定某表某列DataTables("订单").DataCols("折扣").AllowEdit = True 按钮或菜单10 DataCol 动态地修改表达式列的计算公式DataTables("订单").DataCols("金额").Expression = "数量* 单价"DataTables("订单").DataCols("金额").Expression = "数量* 单价* (1 - 折扣)" 按钮或菜单Expression 属性只对表达式列有效11 DataCol 返回列的名称For Each dc As DataCol In DataTables("订单").DataCols Output.Show()Next 按钮或菜单列出订单表中所有列的名称12 DataCol 增加临时列,并可给临时列设置表达式DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])") 按钮或菜单通过代码增加的临时列,在重新打开项目文件后,将不复存在13 DataCol 删除临时列If DataTables("订单").DataCols.Contains("金额") ThenDataTables("订单").DataCols.Delete("金额")End If 按钮或菜单通过Add方法增加的临时列,可以用Delete方法删除14 DataCol 一列设公式,另列得结果If = "第一列" ThenIf e.DataRow.IsNull("第一列") Thene.DataRow("第二列") = NothingElsee.DataRow("第二列") = Eval(e.DataRow("第一列"),e.DataRow)End IfEnd IfDataColChanged事件假定希望根据第一列输入的计算公式,在第二列得出计算结果15 DataRow删除行DataTables("订单").DataRows(0).Delete() 按钮或菜单删除订单表中的第一行Delete会返回逻辑值,如果删除成功,则返回True,否则返回False16 DataRow重新加载行DataTables("订单").DataRows(1).Load() 按钮或菜单重新加载订单表的第二行17 DataRow撤销修改DataTables("订单").DataRows(1).Load(False) 按钮或菜单撤销对订单表第二行的修改18 DataRowDataTable中增加一行 With DataTables("订单").DataRows.AddNew() '增加一行End With 按钮或菜单19 DataRow删除指定位置的行With DataTables("订单").DataRows.Delete(0) '删除第一行End With 按钮或菜单20 DataRow清除所有行With DataTables("单").DataRows.Delete(0) '删除第一行End With 按钮或菜单21 DataRow按日期列求月份Dim dr As DataRow =e.DataRowif ="开始时间" Thenif dr.IsNull("开始时间") = false Thendr("月") = dr("开始时间").MonthElsedr("月") = NothingEnd IfEnd If 表DataColChanged事件22 DataRow新增行编号自动加1 e.DataRow("编号") = pute("Max(编号)") + 1DataRowAdding事件假定表中有一个编号列,希望新增行的时候,编号列能够自动加1这个例子其实没有什么意义的,对于外部表使用自动增量主键列,对于内部表使用表达式列引用内部编号列“_Identidy”,是更好的选择。

FOXTABLE编程

FOXTABLE编程

数据绑定最简单的绑定首先还是打开我们的示例文件“专业报表.Table”,然后在命令窗口执行下面的代码:Dim doc As New PrintDocDim rt As New prt.RenderTextrt.DataBinding.DataSource = BindTables("订单") '将rt绑定到订单表rt.Text= "[Fields!产品.Value]" '设置打印字段doc.body.Children.Add(rt)doc.Preview()上述代码会打印出订单表中每一行的产品名称。

DataBinding用于设置打印对象的绑定属性,该属性包括一些子属性,DataSource表示数据来源,数据来源可以是Table,还可以是数组或者集合。

需要注意的是,不能直接绑定到Table,如果要绑定到Table,必须用BindTables来设置,例如:rt.DataBinding.DataSource = BindTables("订单")如果对象的内容来自于某一列,其Text属性的设置格式如下:[Fields!列名称.Value]使用表达式在命令窗口执行下面的代码:Dim doc As New PrintDocDim rt As New prt.RenderTextrt.DataBinding.DataSource = BindTables("订单") '将rt绑定到订单表rt.Text= "[Math.Round(Fields!金额.Value,1)]" '设置打印表达式doc.body.Children.Add(rt)doc.Preview()留意方括号中的内容:Math.Round(Fields!金额.Value,1)意思是打印的时候将金额列的内容,保留一位小数,你可以在Text属性中使用Foxtable支持的所有函数。

狐表开发实例

狐表开发实例

狐表开发实例一、背景介绍狐表是一款基于Python语言开发的轻量级数据可视化工具,它可以帮助用户快速地将数据转换成图表形式,便于数据分析和决策。

狐表支持多种数据源,包括Excel、CSV、MySQL等,同时也支持多种图表类型,如折线图、柱状图、饼图等。

二、安装及环境配置1. 安装Python:进入Python官网下载对应版本的Python安装包,根据提示进行安装。

2. 安装狐表:在命令行中输入“pip install foxcharts”进行安装。

3. 环境配置:在使用狐表前需要先导入相应的库文件,在Python中输入“import foxcharts”即可。

三、基本用法1. 数据导入:在使用狐表前需要先将数据导入到程序中。

可以通过以下代码实现:```import foxcharts as fcdata = fc.read_excel('data.xlsx') # 读取Excel文件```2. 图表绘制:在导入数据后即可开始绘制图表。

以下是一个简单的折线图绘制示例:```fc.plot(data, x='日期', y='销售额', title='2019年销售额',chart_type='line')```其中x表示横坐标列名,y表示纵坐标列名,title表示图表标题,chart_type表示图表类型。

四、高级用法1. 多图表绘制:可以通过subplot函数绘制多个图表。

以下是一个简单的例子:```import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 2)fc.plot(data, x='日期', y='销售额', title='2019年销售额',chart_type='line', ax=axes[0, 0])fc.plot(data, x='日期', y='访问量', title='2019年访问量',chart_type='line', ax=axes[0, 1])fc.plot(data, x='日期', y=['销售额','访问量'], title='2019年销售额和访问量对比', chart_type='barh', ax=axes[1, :])```其中ax参数表示子图的位置。

Foxtable所有范例代码

Foxtable所有范例代码

=====Excel‎图表.foxdb‎=====项目事件After‎O penP‎r ojec‎tForms‎("图表设置").Open()计划管理表事件窗口表事件‎窗口与控件‎事件图表设置_‎After‎L oadDim x,y As Strin‎gDim i As Integ‎e rFor Each c As Col In Curre‎n ttab‎l e.ColsIf c.Visib‎l e Theni = i + 1If c.Datac‎o l.IsNum‎e ric Theny = y & "|【" & i & "】" & c.Capti‎o nElsex = x & "|【" & i & "】" & c.Capti‎o nEnd IfEnd IfNexte.Form.Contr‎o ls("Check‎e dCom‎b oBox‎1").Combo‎L ist = y.Trim("|")e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎2").Combo‎L ist = x.Trim("|") 图表设置_‎Butto‎n1_Cl‎i ckexStr‎= "图表区"Forms‎("图表外观").Open图表设置_‎Butto‎n2_Cl‎i ckexStr‎= "绘图区"Forms‎("图表外观").Open图表设置_‎Butto‎n3_Cl‎i ckexStr‎= "图例"Forms‎("图表外观").Open图表设置_‎Butto‎n4_Cl‎i ckexStr‎= "标题"Forms‎("图表外观").Open图表设置_‎Butto‎n5_Cl‎i ck'对数据列验‎证Dim y As Strin‎g = e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎1").Value‎Dim x As Strin‎g = e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎2").Value‎If y = "" ThenMessa‎g eBox‎.Show("数据系列中‎的数值轴(Y)必须设置! ","信息提示",Messa‎g eBox‎B utto‎n s.OK,Messa‎g eBox‎I con.Warni‎n g)Retur‎nElseIf e.Form.Contr‎o ls("ListB‎o x1").Combo‎L ist = "" ThenMessa‎g eBox‎.Show("数值轴(Y)不能全部设‎置为次坐标‎轴! ","信息提示",Messa‎g eBox‎B utto‎n s.OK,Messa‎g eBox‎I con.Warni‎n g)Retur‎nEnd IfEnd IfDim ksl,jsl As Integ‎e r 'x轴的起始‎列与结束列‎If x <> "" ThenDim xs As Strin‎g() = x.Split‎(",")If xs.Lengt‎h > 1 '如果x轴有‎多列Dim xsn(xs.Lengt‎h-1) As Integ‎e rFor n As Integ‎e r = 0 To xs.Lengt‎h - 1xsn(n) = xs(n).SubSt‎r ing(1,xs(n).LastI‎n dexO‎f("】")-1)NextArray‎.Sort(xsn) '得到各列的‎序号,并排序For n As Integ‎e r = 1 To xsn.Lengt‎h - 1If xsn(n) - xsn(n-1) > 1Messa‎g eBox‎.Show("如果X轴的‎分类列有多‎个, 那么它必须‎是连续的! ","信息提示",Messa‎g eBox‎B utto‎n s.OK,Messa‎g eBox‎I con.Warni‎n g)Retur‎nEnd IfNextksl = xsn(0)jsl = xsn(xsn.Lengt‎h-1)Elseksl = x.SubSt‎r ing(1,stI‎n dexO‎f("】")-1)jsl = kslEnd IfEnd If'定义Exc‎elDim f As Strin‎g = Proje‎c tPat‎h & "Excel‎数据.xls"Dim t As Table‎= Curre‎n tTab‎l eDim flg As New SaveE‎x celF‎l agsflg.CellS‎t yle = Truet.SaveE‎x cel(f,,flg) '导出数据到‎指定文件Dim App As New MSExc‎e l.Appli‎c atio‎nApp.Displ‎a yAle‎r ts = False‎Dim Wb As MSExc‎e l.WorkB‎o ok = App.WorkB‎o oks.Open(f)Dim Ws As MSExc‎e l.WorkS‎h eet = Wb.WorkS‎h eets‎(1)Dim i As Integ‎e r = e.Form.Contr‎o ls("Numer‎i cCom‎b oBox‎1").Value‎ '指定大小Dim j As Integ‎e r = e.Form.Contr‎o ls("Numer‎i cCom‎b oBox‎2").Value‎Dim rg As MSExc‎e l.Range‎= Ws.Cells‎(t.Heade‎r Rows‎+ t.Rows.Count‎,1)Dim Co As MSExc‎e l.Chart‎O bjec‎t = Ws.Chart‎O bjec‎t s.Add(rg.Left,rg.Top,i,j) '在最末行的‎第一个单元‎格处生成图‎表Ws.Drawi‎n gObj‎e cts(1).Shado‎w = e.Form.Contr‎o ls("Check‎B ox1").Check‎e d '阴影Ws.Drawi‎n gObj‎e cts(1).Round‎e dCor‎n ers = e.Form.Contr‎o ls("Check‎B ox2").Check‎e d '圆角Dim Cht As MSExc‎e l.Chart‎= Co.Chart‎Funct‎i ons.Execu‎t e("App_W‎g sz","图表区",Wb,Cht,1,2,3) '设置图表区‎外观,此行不能放‎到后面,否则将替代‎其它对象的‎设置'图表类型并‎指定y轴和‎绘图方式Cht.Chart‎T ype =Funct‎i ons.Execu‎t e("App_C‎h artT‎y pe",e.Form.Contr‎o ls("Combo‎B ox1").Value‎,e.Form.Contr‎o ls("Combo‎B ox2" ).Value‎)Dim cs As Strin‎g() = y.Split‎(",")Dim lh As Integ‎e rDim ar As Strin‎gDim first‎As Integ‎e r = Curre‎n tTab‎l e.Heade‎r Rows‎+ 1 '数据记录的‎起始行Dim last As Integ‎e r = Curre‎n tTab‎l e.Heade‎r Rows‎+ Curre‎n tTab‎l e.Rows.Count‎ '数据记录的‎结束行For Each c As Strin‎g In cslh = c.SubSt‎r ing(1,stI‎n dexO‎f("】")-1)ar = ar & "," & Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & first‎& ":" &Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & lastNextar = ar.Trim(",")rg = Ws.Range‎(ar)If e.Form.Contr‎o ls("Combo‎B ox2").Value‎.Conta‎i ns("饼图") ThenDim ars As Strin‎g() = ar.Split‎(",")If ars.Lengt‎h > 1 Thenrg = Ws.Range‎(ars(0))End IfEnd IfIf e.Form.Contr‎o ls("Check‎B ox10‎").Check‎e d ThenCht.SetSo‎u rceD‎a ta(rg,MSExc‎e l.XlRow‎C ol.xlCol‎u mns) '数据产生自‎列ElseCht.SetSo‎u rceD‎a ta(rg,MSExc‎e l.XlRow‎C ol.xlRow‎s) '数据产生于‎行End IfFunct‎i ons.Execu‎t e("App_W‎g sz","绘图区",Wb,Cht,4,5,6) '绘图区的外‎观设置'指定x轴的‎分类列区域‎Dim xbz As Strin‎gIf x <> "" Thenxbz = "=" & & "!R" & first‎& "C" & ksl & ":R" & last & "C" & jslIf e.Form.Contr‎o ls("Check‎B ox5").Check‎e d Then '合并单元格‎For m As Integ‎e r = jsl To ksl Step -1Dim hh As Integ‎e r = first‎For n As Integ‎e r = first‎+1 To last+1If Ws.Cells‎(n,m).Value‎<> Ws.Cells‎(hh,m).Value‎Thenrg = Ws.Range‎(Ws.Cells‎(hh,m),Ws.Cells‎(n-1,m))If m = ksl Thenrg.Merge‎rg.Verti‎c alAl‎i gnme‎n t = MSExc‎e l.Const‎a nts.xlCen‎t erhh = nElsei‎f Ws.Cells‎(n,m-1).Value‎= Ws.Cells‎(hh,m-1).Value‎Thenrg.Merge‎rg.Verti‎c alAl‎i gnme‎n t = MSExc‎e l.Const‎a nts.xlCen‎t erhh = nEnd IfEnd IfNextNextEnd IfEnd If'设置每个数‎据系列Dim czb As Strin‎g = e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎3").Value‎Dim czbs As New List(Of Strin‎g) '次坐标轴集‎合If czb > "" Thenczbs.AddRa‎n ge(czb.Split‎(","))End IfDim s As MSExc‎e l.Serie‎sDim ys As Integ‎e r = 15 '颜色序号从‎15开始For n As Integ‎e r = 1 To cs.Lengt‎hIf e.Form.Contr‎o ls("Combo‎B ox2").Value‎.Conta‎i ns("饼图") ThenIf n > 1 ThenExit ForEnd IfEnd Ifs = Cht.Serie‎s Coll‎e ctio‎n(n)If x <> "" Thens.XValu‎e s = xbz '指定对应的‎x轴End If = cs(n-1).SubSt‎r ing(cs(n-1).LastI‎n dexO‎f("】")+1) '系列名称If czbs.Conta‎i ns(cs(n-1)) '如果在次坐‎标集合中找‎到对应的内‎容s.AxisG‎r oup = 2End IfFunct‎i ons.Execu‎t e("App_S‎e ries‎","数据系列_‎" & ,Wb,s,ys+1,ys+2,ys+3)ys = ys+3Next'设置坐标轴‎If e.Form.Contr‎o ls("Combo‎B ox1").Value‎<> "饼图" ThenDim y1min‎,y1max‎,y2min‎,y2max‎As Integ‎e r '设置刻度If czb > "" Then '如果有主轴‎和次轴就要‎分别设置ar = ""Dim br As Strin‎gDim lst1() As Strin‎g = e.Form.Contr‎o ls("ListB‎o x1").Combo‎l ist.Split‎(Chr(13)) Dim lst2() As Strin‎g = e.Form.Contr‎o ls("ListB‎o x2").Combo‎l ist.Split‎(Chr(13)) For Each c As Strin‎g In lst1lh = c.SubSt‎r ing(1,stI‎n dexO‎f("】")-1)ar = ar & "," & Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & first‎& ":" & Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & lastNextFor Each c As Strin‎g In lst2lh = c.SubSt‎r ing(1,stI‎n dexO‎f("】")-1)br = br & "," & Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & first‎& ":" & Funct‎i ons.Execu‎t e("App_C‎o lChr‎",lh) & lastNextrg = Ws.Range‎(ar.Trim(","))y1min‎= App.Works‎h eetF‎u ncti‎o n.Min(rg)y1max‎= App.Works‎h eetF‎u ncti‎o n.Max(rg)With Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlVal‎u e).Minim‎u mSca‎l e = y1min‎.Maxim‎u mSca‎l e = y1max‎End Withrg = Ws.Range‎(br.Trim(","))y2min‎= App.Works‎h eetF‎u ncti‎o n.Min(rg)y2max‎= App.Works‎h eetF‎u ncti‎o n.Max(rg)With Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlVal‎u e,2).Minim‎u mSca‎l e = y2min‎.Maxim‎u mSca‎l e = y2max‎End WithElse '否则只要设‎置主轴刻度‎y1min‎= App.Works‎h eetF‎u ncti‎o n.Min(Ws.Range‎(ar))y1max‎= App.Works‎h eetF‎u ncti‎o n.Max(Ws.Range‎(ar))With Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlVal‎u e).Minim‎u mSca‎l e = y1min‎.Maxim‎u mSca‎l e = y1max‎End WithEnd IfIf e.Form.Contr‎o ls("Check‎B ox11‎").Check‎e d And e.Form.Contr‎o ls("TextB‎o x3").Value‎<> "" Then With Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlCat‎e gory‎) '设置X轴标‎题网格.HasTi‎t le = True.AxisT‎i tle.Text = e.Form.Contr‎o ls("TextB‎o x3").Value‎.HasMa‎j orGr‎i dlin‎e s = e.Form.Contr‎o ls("Check‎B ox12‎").Check‎e d.HasMi‎n orGr‎i dlin‎e s = e.Form.Contr‎o ls("Check‎B ox13‎").Check‎e dEnd WithEnd IfIf e.Form.Contr‎o ls("Check‎B ox6").Check‎e d And e.Form.Contr‎o ls("TextB‎o x1").Value‎<> "" ThenWith Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlVal‎u e,1) '设置Y主轴‎标题网格.HasTi‎t le = True.AxisT‎i tle.Text = e.Form.Contr‎o ls("TextB‎o x1").Value‎.HasMa‎j orGr‎i dlin‎e s = e.Form.Contr‎o ls("Check‎B ox7").Check‎e d.HasMi‎n orGr‎i dlin‎e s = e.Form.Contr‎o ls("Check‎B ox8").Check‎e dEnd WithEnd IfIf e.Form.Contr‎o ls("Check‎B ox9").Enabl‎e d And e.Form.Contr‎o ls("Check‎B ox9").Check‎e d Ande.Form.Contr‎o ls("TextB‎o x2").Value‎<> "" ThenWith Cht.Axes(MSExc‎e l.XlAxi‎s Type‎.xlVal‎u e,2) '设置Y次轴‎标题网格.HasTi‎t le = True.AxisT‎i tle.Text = e.Form.Contr‎o ls("TextB‎o x2").Value‎End WithEnd IfEnd If'图例Dim sfxs As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox3").Check‎e dCht.HasLe‎g end = sfxsIf sfxs ThenFunct‎i ons.Execu‎t e("App_W‎g sz","图例",Wb,Cht,7,8,9)End If'标题sfxs = e.Form.Contr‎o ls("Check‎B ox4").Check‎e dCht.HasTi‎t le = sfxsIf sfxs ThenFunct‎i ons.Execu‎t e("App_W‎g sz","标题",Wb,Cht,10,11,12)End If'显示表格sfxs = e.Form.Contr‎o ls("Check‎B ox14‎").Check‎e dCht.Hasda‎t atab‎l e = sfxsApp.Visib‎l e = True图表设置_‎Butto‎n6_Cl‎i ckDim cb As WinFo‎r m.Check‎e dCom‎b oBox‎= e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎3")Dim tblx As Strin‎g = e.Form.Contr‎o ls("Combo‎B ox2").Value‎If tblx.Conta‎i ns("三维") Or tblx.Conta‎i ns("饼图") Or tblx.Conta‎i ns("圆柱") Or tblx.Conta‎i ns("圆锥") Or tblx.Conta‎i ns("棱锥") Thencb.Enabl‎e d = False‎cb.Value‎= ""Elsecb.Enabl‎e d = TrueEnd If'数据系列Dim z As Strin‎g = e.Form.Contr‎o ls("Check‎e dCom‎b oBox‎1").Value‎Dim zs As Strin‎g()If z > "" Thenzs = z.Split‎(",")If zs.Lengt‎h > 1 Thenbo‎L ist = z.Repla‎c e(",","|")Elsecb.Value‎= ""End IfElsecb.Value‎= ""End IfDim c As Strin‎g = cb.Value‎If c > "" Thene.Form.Contr‎o ls("Check‎B ox9").Enabl‎e d = Truezs = z.Split‎(",") '所有数据列‎集合Dim zls As New List(Of Strin‎g)zls.AddRa‎n ge(zs)Dim cs As Strin‎g() = c.Split‎(",") '次轴数据列‎集合Dim cls As New List(Of Strin‎g)cls.AddRa‎n ge(cs)For i As Integ‎e r = 0 To cls.Count‎- 1Dim va As Strin‎g = cls(i)If zls.Conta‎i ns(va) Thenzls.Remov‎e(va)Elsecls.Remov‎e(va)End IfNextDim zxx As Strin‎gIf zls.Count‎> 0 ThenFor Each cn As Strin‎g In zlszxx = zxx & "|" & cnNextzxx = zxx.Trim("|")End Ife.Form.Contr‎o ls("ListB‎o x1").Combo‎L ist = zxxzxx = ""If cls.Count‎> 0 ThenFor Each cn As Strin‎g In clszxx = zxx & "|" & cnNextzxx = zxx.Trim("|")End Ife.Form.Contr‎o ls("ListB‎o x2").Combo‎L ist = zxxElseIf z > "" Thene.Form.Contr‎o ls("ListB‎o x1").Combo‎L ist = z.Repla‎c e(",","|") End Ife.Form.Contr‎o ls("ListB‎o x2").Combo‎L ist = ""e.Form.Contr‎o ls("Check‎B ox9").Enabl‎e d = False‎End If图表设置_‎Butto‎n7_Cl‎i cke.Form.Close‎图表设置_‎Check‎B ox11‎_Chec‎k edCh‎a nged‎e.Form.Contr‎o ls("TextB‎o x3").Enabl‎e d = e.Sende‎r.Check‎e de.Form.Contr‎o ls("Check‎B ox12‎").Enabl‎e d = e.Sende‎r.Check‎e de.Form.Contr‎o ls("Check‎B ox13‎").Enabl‎e d = e.Sende‎r.Check‎e d图表设置_‎Check‎B ox3_‎C heck‎e dCha‎n gede.Form.Contr‎o ls("Butto‎n3").Enabl‎e d = e.Sende‎r.Check‎e d图表设置_‎Check‎B ox4_‎C heck‎e dCha‎n gede.Form.Contr‎o ls("Butto‎n4").Enabl‎e d = e.Sende‎r.Check‎e d图表设置_‎Check‎B ox6_‎C heck‎e dCha‎n gede.Form.Contr‎o ls("TextB‎o x1").Enabl‎e d = e.Sende‎r.Check‎e de.Form.Contr‎o ls("Check‎B ox7").Enabl‎e d = e.Sende‎r.Check‎e de.Form.Contr‎o ls("Check‎B ox8").Enabl‎e d = e.Sende‎r.Check‎e d图表设置_‎Check‎B ox9_‎C heck‎e dCha‎n gede.Form.Contr‎o ls("TextB‎o x2").Enabl‎e d = e.Sende‎r.Check‎e d图表设置_‎Check‎e dCom‎b oBox‎1_Tex‎t Chan‎g ede.Form.Contr‎o ls("Butto‎n6").Perfo‎r mCli‎c k图表设置_‎Check‎e dCom‎b oBox‎2_Tex‎t Chan‎g edDim cb As WinFo‎r m.Check‎B ox = e.Form.Contr‎o ls("Check‎B ox5")cb.Enabl‎e d = False‎cb.Check‎e d = False‎Dim xx As Strin‎g = e.Sende‎r.Value‎If xx <> "" Thencb.Enabl‎e d = Truecb.Check‎e d = TrueEnd If图表设置_‎Check‎e dCom‎b oBox‎3_Tex‎t Chan‎g ede.Form.Contr‎o ls("Butto‎n6").Perfo‎r mCli‎c k图表设置_‎Combo‎B ox1_‎V alue‎C hang‎e dDim lst As Strin‎g = Funct‎i ons.Execu‎t e("App_C‎h arts‎",e.Sende‎r.Value‎) e.Form.Contr‎o ls("Combo‎B ox2").Combo‎L ist = lstDim lsts As Strin‎g() = lst.Split‎("|")e.Form.Contr‎o ls("Combo‎B ox2").Value‎= lsts(0)图表设置_‎Combo‎B ox2_‎V alue‎C hang‎e de.Form.Contr‎o ls("Butto‎n6").Perfo‎r mCli‎c k图表设置_‎ListB‎o x1_D‎o uble‎C lick‎Dim v As Strin‎g = e.Sende‎r.Value‎If v > "" Thenv = v.SubSt‎r ing(v.Index‎O f("】")+1)exStr‎= "Z数据系列‎_" & vForms‎("图表数据系‎列").OpenEnd If图表设置_‎ListB‎o x2_D‎o uble‎C lick‎Dim v As Strin‎g = e.Sende‎r.Value‎If v > "" Thenv = v.SubSt‎r ing(v.Index‎O f("】")+1)exStr‎= "C数据系列‎_" & vForms‎("图表数据系‎列").OpenEnd If图表数据系‎列_Aft‎e rLoa‎dDim lx As Strin‎g = exStr‎If lx.SubSt‎r ing(0,1) = "Z" Then '如果是主轴‎的数据系列‎,不允许设置‎类型e.Form.Contr‎o ls("Group‎B ox1").Enabl‎e d = False‎If Forms‎("图表设置").Contr‎o ls("Combo‎B ox1").Value‎= "饼图" Thene.Form.Contr‎o ls("Check‎B ox3").Enabl‎e d = TrueEnd IfEnd Iflx = lx.SubSt‎r ing(lx.Index‎O f("_")+1)e.Form.Text = "数据系列【" & lx & "】格式设置"Dim f As Strin‎g = Proje‎c tPat‎h & "Net\Chart‎\数据系列_‎" & lx & ".txt"If FileS‎y s.FileE‎x ists‎(f) ThenDim vs As Strin‎g() = FileS‎y s.ReadA‎l lTex‎t(f).Split‎("ㄉ")Dim v As Strin‎g = vs(1)vs = v.Split‎(",")'系列名称e.Form.Contr‎o ls("TextB‎o x1").Value‎= vs(0)'图表类型Dim lxs As Strin‎g() = Funct‎i ons.Execu‎t e("App_C‎h artN‎u m",vs(1)).Split‎(",")e.Form.Contr‎o ls("Combo‎B ox1").Value‎= lxs(0)e.Form.Contr‎o ls("Combo‎B ox2").Value‎= lxs(1)'数据标签e.Form.Contr‎o ls("Check‎B ox1").Check‎e d = vs(2)e.Form.Contr‎o ls("Check‎B ox2").Check‎e d = vs(3)e.Form.Contr‎o ls("Check‎B ox3").Check‎e d = vs(4)'分色显示e.Form.Contr‎o ls("Check‎B ox4").Check‎e d = vs(5)Elsee.Form.Contr‎o ls("TextB‎o x1").Value‎= lxEnd IfIf e.Form.Contr‎o ls("Check‎B ox3").Enabl‎e d = False‎Thene.Form.Contr‎o ls("Check‎B ox3").Check‎e d = False‎End If图表数据系‎列_But‎t on1_‎C lick‎Forms‎("图表外观").Open图表数据系‎列_But‎t on2_‎C lick‎Dim xlmc As Strin‎g = e.Form.Contr‎o ls("TextB‎o x1").Value‎If xlmc = "" ThenMessa‎g eBox‎.Show("数据系列名‎称不能为空‎! ","信息提示",Messa‎g eBox‎B utto‎n s.OK,Messa‎g eBox‎I con.Warni‎n g)Retur‎nElsei‎f xlmc.Conta‎i ns(",") ThenMessa‎g eBox‎.Show("数据系列名‎称中不能包‎含半角逗号‎! ","信息提示",Messa‎g eBox‎B utto‎n s.OK,Messa‎g eBox‎I con.Warni‎n g)Retur‎nEnd IfDim tblx As Integ‎e r =Funct‎i ons.Execu‎t e("App_C‎h artT‎y pe",e.Form.Contr‎o ls("Combo‎B ox1").Value‎,e.Form.Contr‎o ls("Combo‎B ox2" ).Value‎)Dim flmc As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox1").Check‎e dDim sz As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox2").Check‎e dDim bfb As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox3").Check‎e dDim fs As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox4").Check‎e d'保存设置Dim str As Strin‎g = xlmc & "," & tblx & "," & flmc & "," & sz & "," & bfb & "," & fsDim f As Strin‎g = Proje‎c tPat‎h & "Net\Chart‎\" & exStr‎.SubSt‎r ing(1) & ".txt" '保存文件名‎If Not FileS‎y s.FileE‎x ists‎(f) ThenIf Not FileS‎y s.Direc‎t oryE‎x ists‎(Proje‎c tPat‎h & "Net\Chart‎") ThenFileS‎y s.Creat‎e Dire‎c tory‎(Proje‎c tPat‎h & "Net\Chart‎")End Ifstr = "宋体,0,9,0,0,0,0,0,0,0,3,255,255,255,False‎,True,4,False‎,13,False‎,,,靠右ㄉ" & str ElseDim vs As Strin‎g() = FileS‎y s.ReadA‎l lTex‎t(f).Split‎("ㄉ")Dim qtz As Strin‎g = vs(0)str = qtz & "ㄉ" & strEnd IfFileS‎y s.Write‎A llTe‎x t(f,str,False‎)e.Form.Close‎图表数据系‎列_But‎t on3_‎C lick‎e.Form.Close‎图表数据系‎列_Com‎b oBox‎1_Val‎u eCha‎n gedDim lst As Strin‎g = Funct‎i ons.Execu‎t e("App_C‎h arts‎",e.Sende‎r.Value‎)Dim lsts As Strin‎g() = lst.Split‎("|")lst = ""For Each l As Strin‎g In lstsIf Not l.Conta‎i ns("三维") Thenlst = lst & "|" & lEnd IfNextlst = lst.Trim("|")e.Form.Contr‎o ls("Combo‎B ox2").Combo‎L ist = lstlsts = lst.Split‎("|")e.Form.Contr‎o ls("Combo‎B ox2").Value‎= lsts(0)图表外观_‎After‎L oadDim lx As Strin‎g = exStr‎e.Form.Text = "【" & lx & "】项目设置"If lx.Conta‎i ns("数据系列") Thene.Form.Text = "【" & lx.SubSt‎r ing(lx.Index‎O f("_")+1) & "】项目设置"lx = lx.SubSt‎r ing(1)End IfIf lx = "绘图区" Thene.Form.Contr‎o ls("Group‎B ox3").Enabl‎e d = False‎End IfIf lx <> "标题" Thene.Form.Contr‎o ls("Group‎B ox4").Enabl‎e d = False‎End IfIf lx <> "图例" Thene.Form.Contr‎o ls("Group‎B ox5").Enabl‎e d = False‎End IfDim f As Strin‎g = Proje‎c tPat‎h & "Net\Chart‎\" & lx & ".txt"If FileS‎y s.FileE‎x ists‎(f) ThenDim vs As Strin‎g() = FileS‎y s.ReadA‎l lTex‎t(f).Split‎(",")If lx.Conta‎i ns("数据系列") Thenvs = FileS‎y s.ReadA‎l lTex‎t(f).Split‎("ㄉ")Dim szz As Strin‎g = vs(0)vs = szz.Split‎(",")End If'字体Dim zt1 As Strin‎g = vs(0)Dim zt2 As FontS‎t yle = vs(1)Dim zt3 As Integ‎e r = vs(2)e.Form.Contr‎o ls("TextB‎o x1").Font = New Font(zt1,zt3,zt2)e.Form.Contr‎o ls("TextB‎o x1").ForeC‎o lor = Color‎.FromA‎R GB(vs(3),vs(4),vs(5))'边框样式Dim ss As Strin‎g() = e.Form.Contr‎o ls("Combo‎B ox1").Combo‎L ist.Split‎(Chr(13))e.Form.Contr‎o ls("Combo‎B ox1").Value‎= ss(vs(6))'边框颜色e.Form.Contr‎o ls("Color‎L abel‎1").BackC‎o lor = Color‎.FromA‎R GB(vs(7),vs(8),vs(9))'边框粗细ss = e.Form.Contr‎o ls("Combo‎B ox2").Combo‎L ist.Split‎(Chr(13))e.Form.Contr‎o ls("Combo‎B ox2").Value‎= ss(vs(10)-1)'填充颜色e.Form.Contr‎o ls("Color‎L abel‎2").BackC‎o lor = Color‎.FromA‎R GB(vs(11),vs(12),vs(13)) '是否启用填‎充效果e.Form.Contr‎o ls("Check‎B ox1").Check‎e d = vs(14)'渐变方向e.Form.Contr‎o ls("Radio‎B utto‎n1").Check‎e d = vs(15)ss = e.Form.Contr‎o ls("Combo‎B ox3").Combo‎L ist.Split‎(Chr(13))If vs(16) = 7 Thene.Form.Contr‎o ls("Combo‎B ox3").Value‎= "中心辐射"Elsee.Form.Contr‎o ls("Combo‎B ox3").Value‎= ss(vs(16)-1)End If'纹理图案e.Form.Contr‎o ls("Radio‎B utto‎n2").Check‎e d = vs(17)ss = e.Form.Contr‎o ls("Combo‎B ox4").Combo‎L ist.Split‎(Chr(13)) e.Form.Contr‎o ls("Combo‎B ox4").Value‎= ss(vs(18)-1)'背景图片e.Form.Contr‎o ls("Radio‎B utto‎n3").Check‎e d = vs(19)e.Form.Contr‎o ls("TextB‎o x2").Value‎= vs(20)'标题e.Form.Contr‎o ls("TextB‎o x3").Value‎= vs(21)'图例e.Form.Contr‎o ls("Combo‎B ox5").Value‎= vs(22)End If图表外观_‎Butto‎n1_Cl‎i cke.Form.Close‎图表外观_‎Butto‎n2_Cl‎i ckDim s As New Windo‎w s.Forms‎.FontD‎i alog‎s.ShowC‎o lor = Trues.Font = e.Form.Contr‎o ls("TextB‎o x1").Fonts.Color‎= e.Form.Contr‎o ls("TextB‎o x1").ForeC‎o lorIf s.ShowD‎i alog‎= Dialo‎g Resu‎l t.OK Thene.Form.Contr‎o ls("TextB‎o x1").Font = s.Fonte.Form.Contr‎o ls("TextB‎o x1").ForeC‎o lor = s.Color‎End If图表外观_‎Butto‎n4_Cl‎i ckDim style‎,weigh‎t,gradi‎e nt,textu‎r e As Integ‎e rDim r1,g1,b1,r2,g2,b2,r3,g3,b3 As Integ‎e r'字体设置Dim fn As Strin‎g = e.Form.Contr‎o ls("TextB‎o x1")Dim fs As Integ‎e r = e.Form.Contr‎o ls("TextB‎o x1").Font.Style‎Dim fsize‎As Integ‎e r = e.Form.Contr‎o ls("TextB‎o x1").Font.Size Dim RGBCo‎l or As Color‎= e.Form.Contr‎o ls("TextB‎o x1").ForeC‎o lor r1 = RGBCo‎l or.Rg1 = RGBCo‎l or.Gb1 = RGBCo‎l or.B'边框样式Selec‎t e.Form.Contr‎o ls("Combo‎B ox1").Value‎Case "无"style‎= 0Case "实线"style‎= 1Case "不连续线"style‎= 2Case "单点连续线‎"style‎= 3Case "单点单线结‎合"Case "双点单线结‎合"style‎= 5End Selec‎t'边框颜色RGBCo‎l or = e.Form.Contr‎o ls("Color‎L abel‎1").BackC‎o lor r2 = RGBCo‎l or.Rg2 = RGBCo‎l or.Gb2 = RGBCo‎l or.B'边框粗细Selec‎t e.Form.Contr‎o ls("Combo‎B ox2").Value‎Case "最细"weigh‎t = 1Case "细"weigh‎t = 2Case "中等"weigh‎t = 3Case "粗"weigh‎t = 4End Selec‎t'填充颜色RGBCo‎l or = e.Form.Contr‎o ls("Color‎L abel‎2").BackC‎o lor r3 = RGBCo‎l or.Rg3 = RGBCo‎l or.Gb3 = RGBCo‎l or.B'渐变方向Selec‎t e.Form.Contr‎o ls("Combo‎B ox3").Value‎Case "水平"gradi‎e nt = 1Case "垂直"gradi‎e nt = 2Case "斜上"gradi‎e nt = 3Case "斜下"gradi‎e nt = 4Case "角部辐射"gradi‎e nt = 5Case "中心辐射"gradi‎e nt = 7End Selec‎t'纹理图案Selec‎t e.Form.Contr‎o ls("Combo‎B ox4").Value‎Case "纸莎草纸"textu‎r e = 1Case "画布"textu‎r e = 2Case "斜纹布"textu‎r e = 3Case "编织物"textu‎r e = 4Case "水滴"textu‎r e = 5Case "纸袋"textu‎r e = 6Case "鱼类化石"Case "沙滩"textu‎r e = 8Case "绿色大理石‎"textu‎r e = 9Case "白色大理石‎"textu‎r e = 10Case "褐色大理石‎"textu‎r e = 11Case "花岗岩"textu‎r e = 12Case "新闻纸"textu‎r e = 13Case "再生纸"textu‎r e = 14Case "羊皮纸"textu‎r e = 15Case "信纸"textu‎r e = 16Case "蓝色面巾纸‎"textu‎r e = 17Case "粉色面巾纸‎"textu‎r e = 18Case "紫色网格"textu‎r e = 19Case "花束"textu‎r e = 20Case "软木塞"textu‎r e = 21Case "胡桃"textu‎r e = 22Case "栎木"textu‎r e = 23Case "深色木质"textu‎r e = 24End Selec‎t'其它设置Dim sfxg As Boole‎a n = e.Form.Contr‎o ls("Check‎B ox1").Check‎e dDim rd1 As Boole‎a n = e.Form.Contr‎o ls("Radio‎B utto‎n1").Check‎e dDim rd2 As Boole‎a n = e.Form.Contr‎o ls("Radio‎B utto‎n2").Check‎e dDim rd3 As Boole‎a n = e.Form.Contr‎o ls("Radio‎B utto‎n3").Check‎e dDim f As Strin‎g = e.Form.Contr‎o ls("TextB‎o x2").Value‎Dim bt As Strin‎g = e.Form.Contr‎o ls("TextB‎o x3").Value‎Dim wz As Strin‎g = e.Form.Contr‎o ls("Combo‎B ox5").Value‎'保存设置Dim str As Strin‎g = fn & "," & fs & "," & fsize‎& "," & r1 & "," & g1 & "," & b1 & _"," & style‎& "," & r2 & "," & g2 & "," & b2 & "," & weigh‎t & _"," & r3 & "," & g3 & "," & b3 & "," & sfxg & _"," & rd1 & "," & gradi‎e nt & "," & rd2 & "," & textu‎r e & "," & rd3 & "," & f & "," & bt & "," & wz f = Proje‎c tPat‎h & "Net\Chart‎" '检查路径是‎否存在If Not FileS‎y s.Direc‎t oryE‎x ists‎(f) ThenFileS‎y s.Creat‎e Dire‎c tory‎(f)End IfDim lx As Strin‎g = exStr‎f = f & "\" & lx & ".txt" '保存文件名‎If lx.Conta‎i ns("数据系列") Thenf = f.Repla‎c e(lx,lx.SubSt‎r ing(1))str = str & "ㄉ"If FileS‎y s.FileE‎x ists‎(f) ThenDim vs As Strin‎g() = FileS‎y s.ReadA‎l lTex‎t(f).Split‎("ㄉ") Dim qtz As Strin‎g = vs(1)str = str & qtzEnd IfEnd IfFileS‎y s.Write‎A llTe‎x t(f,str,False‎)e.Form.Close‎图表外观_‎Check‎B ox1_‎C heck‎e dCha‎n gede.Form.Contr‎o ls("Group‎B ox2").Enabl‎e d = e.Sende‎r.Check‎e d图表外观_‎Radio‎B utto‎n1_Ch‎e cked‎C hang‎e de.Form.Contr‎o ls("Combo‎B ox3").Enabl‎e d = e.Sende‎r.Check‎e d图表外观_‎Radio‎B utto‎n2_Ch‎e cked‎C hang‎e de.Form.Contr‎o ls("Combo‎B ox4").Enabl‎e d = e.Sende‎r.Check‎e d图表外观_‎Radio‎B utto‎n3_Ch‎e cked‎C hang‎e de.Form.Contr‎o ls("TextB‎o x1").Enabl‎e d = e.Sende‎r.Check‎e d图表外观_‎TextB‎o x2_D‎o uble‎C lick‎Dim f As New OpenF‎i leDi‎a logf.Filte‎r= "图片文件|*.jpg;*.bmp;*.gif"If f.ShowD‎i alog‎= Dialo‎g Resu‎l t.Ok Thene.Form.Contr‎o ls("TextB‎o x1").Value‎=f.FileN‎a meEnd If自定义函数‎App_C‎h artN‎u mDim tblx As Strin‎gSelec‎t Case Args(0)Case 51tblx = "柱形图,簇状柱形图‎"Case 52tblx = "柱形图,堆积柱形图‎"Case 53tblx = "柱形图,百分比堆积‎柱形图"Case 57tblx = "条形图,簇状条形图‎"Case 58tblx = "条形图,堆积条形图‎"Case 59tblx = "条形图,百分比堆积‎条形图"Case 4tblx = "折线图,折线图"Case 65tblx = "折线图,数据点折线‎图"Case 63tblx = "折线图,堆积折线图‎"Case 66tblx = "折线图,堆积数据点‎折线图"Case 64tblx = "折线图,百分比堆积‎折线图"Case 67tblx = "折线图,百分比堆积‎数据点折线‎图"Case 1tblx = "面积图,面积图"Case 76tblx = "面积图,堆积面积图‎"Case 77tblx = "面积图,百分比堆积‎面积图"End Selec‎tRetur‎n tblxApp_C‎h arts‎Dim lst As Strin‎gSelec‎t Case Args(0)Case "柱形图"lst = "簇状柱形图‎|三维簇状柱‎形图|堆积柱形图‎|三维堆积柱‎形图|百分比堆积‎柱形图|三维百分比‎堆积柱形图‎|三维柱形图‎"Case "条形图"lst = "簇状条形图‎|三维簇状条‎形图|堆积条形图‎|三维堆积条‎形图|百分比堆积‎条形图|三维百分比‎堆积条形图‎"Case "折线图"lst = "折线图|数据点折线‎图|堆积折线图‎|堆积数据点‎折线图|百分比堆积‎折线图|百分比堆积‎数据点折线‎图|三维折线图‎"Case "饼图"lst = "饼图|分离型饼图‎|三维饼图|三维分离型‎饼图|复合饼图|复合条饼图‎"Case "面积图"lst = "面积图|三维面积图‎|堆积面积图‎|三维堆积面‎积图|百分比堆积‎面积图|三维百分比‎堆积面积图‎"Case "圆柱图"lst = "柱形圆柱图‎|条形圆柱图‎|堆积柱形圆‎柱图|堆积条形圆‎柱图|百分比堆积‎柱形圆柱图‎|百分比堆积‎条形圆柱图‎|三维柱形圆‎柱图"Case "圆锥图"lst = "柱形圆锥图‎|条形圆锥图‎|堆积柱形圆‎锥图|堆积条形圆‎锥图|百分比堆积‎柱形圆锥图‎|百分比堆积‎条形圆锥图‎|三维柱形圆‎锥图"Case "棱锥图"lst = "柱形棱锥图‎|条形棱锥图‎|堆积柱形棱‎锥图|堆积条形棱‎锥图|百分比堆积‎柱形棱锥图‎|百分比堆积‎条形棱锥图‎|三维柱形棱‎锥图"End Selec‎tRetur‎n lstApp_C‎h artT‎y peDim tblx As Integ‎e rSelec‎t Case Args(0)Case "柱形图"。

Foxtable所有范例代码

Foxtable所有范例代码

=====Excel图表.foxdb=====项目事件AfterOpenProjectForms("图表设置").Open()计划管理表事件窗口表事件窗口与控件事件图表设置_AfterLoadDim x,y As StringDim i As IntegerFor Each c As Col In Currenttable.ColsIf c.Visible Theni = i + 1If c.Datacol.IsNumeric Theny = y & "|【" & i & "】" & c.CaptionElsex = x & "|【" & i & "】" & c.CaptionEnd IfEnd IfNexte.Form.Controls("CheckedComboBox1").ComboList = y.Trim("|")e.Form.Controls("CheckedComboBox2").ComboList = x.Trim("|") 图表设置_Button1_ClickexStr = "图表区"Forms("图表外观").Open图表设置_Button2_ClickexStr = "绘图区"Forms("图表外观").Open图表设置_Button3_ClickexStr = "图例"Forms("图表外观").Open图表设置_Button4_ClickexStr = "标题"Forms("图表外观").Open图表设置_Button5_Click'对数据列验证Dim y As String = e.Form.Controls("CheckedComboBox1").ValueDim x As String = e.Form.Controls("CheckedComboBox2").ValueIf y = "" ThenMessageBox.Show("数据系列中的数值轴(Y)必须设置! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)ReturnElseIf e.Form.Controls("ListBox1").ComboList = "" ThenMessageBox.Show("数值轴(Y)不能全部设置为次坐标轴! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)ReturnEnd IfEnd IfDim ksl,jsl As Integer 'x轴的起始列与结束列If x <> "" ThenDim xs As String() = x.Split(",")If xs.Length > 1 '如果x轴有多列Dim xsn(xs.Length-1) As IntegerFor n As Integer = 0 To xs.Length - 1xsn(n) = xs(n).SubString(1,xs(n).LastIndexOf("】")-1)NextArray.Sort(xsn) '得到各列的序号,并排序For n As Integer = 1 To xsn.Length - 1If xsn(n) - xsn(n-1) > 1MessageBox.Show("如果X轴的分类列有多个, 那么它必须是连续的! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)ReturnEnd IfNextksl = xsn(0)jsl = xsn(xsn.Length-1)Elseksl = x.SubString(1,stIndexOf("】")-1)jsl = kslEnd IfEnd If'定义ExcelDim f As String = ProjectPath & "Excel数据.xls"Dim t As Table = CurrentTableDim flg As New SaveExcelFlagsflg.CellStyle = Truet.SaveExcel(f,,flg) '导出数据到指定文件Dim App As New MSExcel.ApplicationApp.DisplayAlerts = FalseDim Wb As MSExcel.WorkBook = App.WorkBooks.Open(f)Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)Dim i As Integer = e.Form.Controls("NumericComboBox1").Value '指定大小Dim j As Integer = e.Form.Controls("NumericComboBox2").ValueDim rg As MSExcel.Range = Ws.Cells(t.HeaderRows + t.Rows.Count,1)Dim Co As MSExcel.ChartObject = Ws.ChartObjects.Add(rg.Left,rg.Top,i,j) '在最末行的第一个单元格处生成图表Ws.DrawingObjects(1).Shadow = e.Form.Controls("CheckBox1").Checked '阴影Ws.DrawingObjects(1).RoundedCorners = e.Form.Controls("CheckBox2").Checked '圆角Dim Cht As MSExcel.Chart = Co.ChartFunctions.Execute("App_Wgsz","图表区",Wb,Cht,1,2,3) '设置图表区外观,此行不能放到后面,否则将替代其它对象的设置'图表类型并指定y轴和绘图方式Cht.ChartType =Functions.Execute("App_ChartType",e.Form.Controls("ComboBox1").Value,e.Form.Controls("ComboBox2" ).Value)Dim cs As String() = y.Split(",")Dim lh As IntegerDim ar As StringDim first As Integer = CurrentTable.HeaderRows + 1 '数据记录的起始行Dim last As Integer = CurrentTable.HeaderRows + CurrentTable.Rows.Count '数据记录的结束行For Each c As String In cslh = c.SubString(1,stIndexOf("】")-1)ar = ar & "," & Functions.Execute("App_ColChr",lh) & first & ":" &Functions.Execute("App_ColChr",lh) & lastNextar = ar.Trim(",")rg = Ws.Range(ar)If e.Form.Controls("ComboBox2").Value.Contains("饼图") ThenDim ars As String() = ar.Split(",")If ars.Length > 1 Thenrg = Ws.Range(ars(0))End IfEnd IfIf e.Form.Controls("CheckBox10").Checked ThenCht.SetSourceData(rg,MSExcel.XlRowCol.xlColumns) '数据产生自列ElseCht.SetSourceData(rg,MSExcel.XlRowCol.xlRows) '数据产生于行End IfFunctions.Execute("App_Wgsz","绘图区",Wb,Cht,4,5,6) '绘图区的外观设置'指定x轴的分类列区域Dim xbz As StringIf x <> "" Thenxbz = "=" & & "!R" & first & "C" & ksl & ":R" & last & "C" & jslIf e.Form.Controls("CheckBox5").Checked Then '合并单元格For m As Integer = jsl To ksl Step -1Dim hh As Integer = firstFor n As Integer = first+1 To last+1If Ws.Cells(n,m).Value <> Ws.Cells(hh,m).Value Thenrg = Ws.Range(Ws.Cells(hh,m),Ws.Cells(n-1,m))If m = ksl Thenrg.Mergerg.VerticalAlignment = MSExcel.Constants.xlCenterhh = nElseif Ws.Cells(n,m-1).Value = Ws.Cells(hh,m-1).Value Thenrg.Mergerg.VerticalAlignment = MSExcel.Constants.xlCenterhh = nEnd IfEnd IfNextNextEnd IfEnd If'设置每个数据系列Dim czb As String = e.Form.Controls("CheckedComboBox3").ValueDim czbs As New List(Of String) '次坐标轴集合If czb > "" Thenczbs.AddRange(czb.Split(","))End IfDim s As MSExcel.SeriesDim ys As Integer = 15 '颜色序号从15开始For n As Integer = 1 To cs.LengthIf e.Form.Controls("ComboBox2").Value.Contains("饼图") ThenIf n > 1 ThenExit ForEnd IfEnd Ifs = Cht.SeriesCollection(n)If x <> "" Thens.XValues = xbz '指定对应的x轴End If = cs(n-1).SubString(cs(n-1).LastIndexOf("】")+1) '系列名称If czbs.Contains(cs(n-1)) '如果在次坐标集合中找到对应的内容s.AxisGroup = 2End IfFunctions.Execute("App_Series","数据系列_" & ,Wb,s,ys+1,ys+2,ys+3)ys = ys+3Next'设置坐标轴If e.Form.Controls("ComboBox1").Value <> "饼图" ThenDim y1min,y1max,y2min,y2max As Integer '设置刻度If czb > "" Then '如果有主轴和次轴就要分别设置ar = ""Dim br As StringDim lst1() As String = e.Form.Controls("ListBox1").Combolist.Split(Chr(13)) Dim lst2() As String = e.Form.Controls("ListBox2").Combolist.Split(Chr(13)) For Each c As String In lst1lh = c.SubString(1,stIndexOf("】")-1)ar = ar & "," & Functions.Execute("App_ColChr",lh) & first & ":" & Functions.Execute("App_ColChr",lh) & lastNextFor Each c As String In lst2lh = c.SubString(1,stIndexOf("】")-1)br = br & "," & Functions.Execute("App_ColChr",lh) & first & ":" & Functions.Execute("App_ColChr",lh) & lastNextrg = Ws.Range(ar.Trim(","))y1min = App.WorksheetFunction.Min(rg)y1max = App.WorksheetFunction.Max(rg)With Cht.Axes(MSExcel.XlAxisType.xlValue).MinimumScale = y1min.MaximumScale = y1maxEnd Withrg = Ws.Range(br.Trim(","))y2min = App.WorksheetFunction.Min(rg)y2max = App.WorksheetFunction.Max(rg)With Cht.Axes(MSExcel.XlAxisType.xlValue,2).MinimumScale = y2min.MaximumScale = y2maxEnd WithElse '否则只要设置主轴刻度y1min = App.WorksheetFunction.Min(Ws.Range(ar))y1max = App.WorksheetFunction.Max(Ws.Range(ar))With Cht.Axes(MSExcel.XlAxisType.xlValue).MinimumScale = y1min.MaximumScale = y1maxEnd WithEnd IfIf e.Form.Controls("CheckBox11").Checked And e.Form.Controls("TextBox3").Value <> "" Then With Cht.Axes(MSExcel.XlAxisType.xlCategory) '设置X轴标题网格.HasTitle = True.AxisTitle.Text = e.Form.Controls("TextBox3").Value.HasMajorGridlines = e.Form.Controls("CheckBox12").Checked.HasMinorGridlines = e.Form.Controls("CheckBox13").CheckedEnd WithEnd IfIf e.Form.Controls("CheckBox6").Checked And e.Form.Controls("TextBox1").Value <> "" ThenWith Cht.Axes(MSExcel.XlAxisType.xlValue,1) '设置Y主轴标题网格.HasTitle = True.AxisTitle.Text = e.Form.Controls("TextBox1").Value.HasMajorGridlines = e.Form.Controls("CheckBox7").Checked.HasMinorGridlines = e.Form.Controls("CheckBox8").CheckedEnd WithEnd IfIf e.Form.Controls("CheckBox9").Enabled And e.Form.Controls("CheckBox9").Checked Ande.Form.Controls("TextBox2").Value <> "" ThenWith Cht.Axes(MSExcel.XlAxisType.xlValue,2) '设置Y次轴标题网格.HasTitle = True.AxisTitle.Text = e.Form.Controls("TextBox2").ValueEnd WithEnd IfEnd If'图例Dim sfxs As Boolean = e.Form.Controls("CheckBox3").CheckedCht.HasLegend = sfxsIf sfxs ThenFunctions.Execute("App_Wgsz","图例",Wb,Cht,7,8,9)End If'标题sfxs = e.Form.Controls("CheckBox4").CheckedCht.HasTitle = sfxsIf sfxs ThenFunctions.Execute("App_Wgsz","标题",Wb,Cht,10,11,12)End If'显示表格sfxs = e.Form.Controls("CheckBox14").CheckedCht.Hasdatatable = sfxsApp.Visible = True图表设置_Button6_ClickDim cb As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox3")Dim tblx As String = e.Form.Controls("ComboBox2").ValueIf tblx.Contains("三维") Or tblx.Contains("饼图") Or tblx.Contains("圆柱") Or tblx.Contains("圆锥") Or tblx.Contains("棱锥") Thencb.Enabled = Falsecb.Value = ""Elsecb.Enabled = TrueEnd If'数据系列Dim z As String = e.Form.Controls("CheckedComboBox1").ValueDim zs As String()If z > "" Thenzs = z.Split(",")If zs.Length > 1 ThenboList = z.Replace(",","|")Elsecb.Value = ""End IfElsecb.Value = ""End IfDim c As String = cb.ValueIf c > "" Thene.Form.Controls("CheckBox9").Enabled = Truezs = z.Split(",") '所有数据列集合Dim zls As New List(Of String)zls.AddRange(zs)Dim cs As String() = c.Split(",") '次轴数据列集合Dim cls As New List(Of String)cls.AddRange(cs)For i As Integer = 0 To cls.Count - 1Dim va As String = cls(i)If zls.Contains(va) Thenzls.Remove(va)Elsecls.Remove(va)End IfNextDim zxx As StringIf zls.Count > 0 ThenFor Each cn As String In zlszxx = zxx & "|" & cnNextzxx = zxx.Trim("|")End Ife.Form.Controls("ListBox1").ComboList = zxxzxx = ""If cls.Count > 0 ThenFor Each cn As String In clszxx = zxx & "|" & cnNextzxx = zxx.Trim("|")End Ife.Form.Controls("ListBox2").ComboList = zxxElseIf z > "" Thene.Form.Controls("ListBox1").ComboList = z.Replace(",","|") End Ife.Form.Controls("ListBox2").ComboList = ""e.Form.Controls("CheckBox9").Enabled = FalseEnd If图表设置_Button7_Clicke.Form.Close图表设置_CheckBox11_CheckedChangede.Form.Controls("TextBox3").Enabled = e.Sender.Checkede.Form.Controls("CheckBox12").Enabled = e.Sender.Checkede.Form.Controls("CheckBox13").Enabled = e.Sender.Checked图表设置_CheckBox3_CheckedChangede.Form.Controls("Button3").Enabled = e.Sender.Checked图表设置_CheckBox4_CheckedChangede.Form.Controls("Button4").Enabled = e.Sender.Checked图表设置_CheckBox6_CheckedChangede.Form.Controls("TextBox1").Enabled = e.Sender.Checkede.Form.Controls("CheckBox7").Enabled = e.Sender.Checkede.Form.Controls("CheckBox8").Enabled = e.Sender.Checked图表设置_CheckBox9_CheckedChangede.Form.Controls("TextBox2").Enabled = e.Sender.Checked图表设置_CheckedComboBox1_TextChangede.Form.Controls("Button6").PerformClick图表设置_CheckedComboBox2_TextChangedDim cb As WinForm.CheckBox = e.Form.Controls("CheckBox5")cb.Enabled = Falsecb.Checked = FalseDim xx As String = e.Sender.ValueIf xx <> "" Thencb.Enabled = Truecb.Checked = TrueEnd If图表设置_CheckedComboBox3_TextChangede.Form.Controls("Button6").PerformClick图表设置_ComboBox1_ValueChangedDim lst As String = Functions.Execute("App_Charts",e.Sender.Value) e.Form.Controls("ComboBox2").ComboList = lstDim lsts As String() = lst.Split("|")e.Form.Controls("ComboBox2").Value = lsts(0)图表设置_ComboBox2_ValueChangede.Form.Controls("Button6").PerformClick图表设置_ListBox1_DoubleClickDim v As String = e.Sender.ValueIf v > "" Thenv = v.SubString(v.IndexOf("】")+1)exStr = "Z数据系列_" & vForms("图表数据系列").OpenEnd If图表设置_ListBox2_DoubleClickDim v As String = e.Sender.ValueIf v > "" Thenv = v.SubString(v.IndexOf("】")+1)exStr = "C数据系列_" & vForms("图表数据系列").OpenEnd If图表数据系列_AfterLoadDim lx As String = exStrIf lx.SubString(0,1) = "Z" Then '如果是主轴的数据系列,不允许设置类型e.Form.Controls("GroupBox1").Enabled = FalseIf Forms("图表设置").Controls("ComboBox1").Value = "饼图" Thene.Form.Controls("CheckBox3").Enabled = TrueEnd IfEnd Iflx = lx.SubString(lx.IndexOf("_")+1)e.Form.Text = "数据系列【" & lx & "】格式设置"Dim f As String = ProjectPath & "Net\Chart\数据系列_" & lx & ".txt"If FileSys.FileExists(f) ThenDim vs As String() = FileSys.ReadAllText(f).Split("ㄉ")Dim v As String = vs(1)vs = v.Split(",")'系列名称e.Form.Controls("TextBox1").Value = vs(0)'图表类型Dim lxs As String() = Functions.Execute("App_ChartNum",vs(1)).Split(",")e.Form.Controls("ComboBox1").Value = lxs(0)e.Form.Controls("ComboBox2").Value = lxs(1)'数据标签e.Form.Controls("CheckBox1").Checked = vs(2)e.Form.Controls("CheckBox2").Checked = vs(3)e.Form.Controls("CheckBox3").Checked = vs(4)'分色显示e.Form.Controls("CheckBox4").Checked = vs(5)Elsee.Form.Controls("TextBox1").Value = lxEnd IfIf e.Form.Controls("CheckBox3").Enabled = False Thene.Form.Controls("CheckBox3").Checked = FalseEnd If图表数据系列_Button1_ClickForms("图表外观").Open图表数据系列_Button2_ClickDim xlmc As String = e.Form.Controls("TextBox1").ValueIf xlmc = "" ThenMessageBox.Show("数据系列名称不能为空! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)ReturnElseif xlmc.Contains(",") ThenMessageBox.Show("数据系列名称中不能包含半角逗号! ","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)ReturnEnd IfDim tblx As Integer =Functions.Execute("App_ChartType",e.Form.Controls("ComboBox1").Value,e.Form.Controls("ComboBox2" ).Value)Dim flmc As Boolean = e.Form.Controls("CheckBox1").CheckedDim sz As Boolean = e.Form.Controls("CheckBox2").CheckedDim bfb As Boolean = e.Form.Controls("CheckBox3").CheckedDim fs As Boolean = e.Form.Controls("CheckBox4").Checked'保存设置Dim str As String = xlmc & "," & tblx & "," & flmc & "," & sz & "," & bfb & "," & fsDim f As String = ProjectPath & "Net\Chart\" & exStr.SubString(1) & ".txt" '保存文件名If Not FileSys.FileExists(f) ThenIf Not FileSys.DirectoryExists(ProjectPath & "Net\Chart") ThenFileSys.CreateDirectory(ProjectPath & "Net\Chart")End Ifstr = "宋体,0,9,0,0,0,0,0,0,0,3,255,255,255,False,True,4,False,13,False,,,靠右ㄉ" & str ElseDim vs As String() = FileSys.ReadAllText(f).Split("ㄉ")Dim qtz As String = vs(0)str = qtz & "ㄉ" & strEnd IfFileSys.WriteAllText(f,str,False)e.Form.Close图表数据系列_Button3_Clicke.Form.Close图表数据系列_ComboBox1_ValueChangedDim lst As String = Functions.Execute("App_Charts",e.Sender.Value)Dim lsts As String() = lst.Split("|")lst = ""For Each l As String In lstsIf Not l.Contains("三维") Thenlst = lst & "|" & lEnd IfNextlst = lst.Trim("|")e.Form.Controls("ComboBox2").ComboList = lstlsts = lst.Split("|")e.Form.Controls("ComboBox2").Value = lsts(0)图表外观_AfterLoadDim lx As String = exStre.Form.Text = "【" & lx & "】项目设置"If lx.Contains("数据系列") Thene.Form.Text = "【" & lx.SubString(lx.IndexOf("_")+1) & "】项目设置"lx = lx.SubString(1)End IfIf lx = "绘图区" Thene.Form.Controls("GroupBox3").Enabled = FalseEnd IfIf lx <> "标题" Thene.Form.Controls("GroupBox4").Enabled = FalseEnd IfIf lx <> "图例" Thene.Form.Controls("GroupBox5").Enabled = FalseEnd IfDim f As String = ProjectPath & "Net\Chart\" & lx & ".txt"If FileSys.FileExists(f) ThenDim vs As String() = FileSys.ReadAllText(f).Split(",")If lx.Contains("数据系列") Thenvs = FileSys.ReadAllText(f).Split("ㄉ")Dim szz As String = vs(0)vs = szz.Split(",")End If'字体Dim zt1 As String = vs(0)Dim zt2 As FontStyle = vs(1)Dim zt3 As Integer = vs(2)e.Form.Controls("TextBox1").Font = New Font(zt1,zt3,zt2)e.Form.Controls("TextBox1").ForeColor = Color.FromARGB(vs(3),vs(4),vs(5))'边框样式Dim ss As String() = e.Form.Controls("ComboBox1").ComboList.Split(Chr(13))e.Form.Controls("ComboBox1").Value = ss(vs(6))'边框颜色e.Form.Controls("ColorLabel1").BackColor = Color.FromARGB(vs(7),vs(8),vs(9))'边框粗细ss = e.Form.Controls("ComboBox2").ComboList.Split(Chr(13))e.Form.Controls("ComboBox2").Value = ss(vs(10)-1)'填充颜色e.Form.Controls("ColorLabel2").BackColor = Color.FromARGB(vs(11),vs(12),vs(13)) '是否启用填充效果e.Form.Controls("CheckBox1").Checked = vs(14)'渐变方向e.Form.Controls("RadioButton1").Checked = vs(15)ss = e.Form.Controls("ComboBox3").ComboList.Split(Chr(13))If vs(16) = 7 Thene.Form.Controls("ComboBox3").Value = "中心辐射"Elsee.Form.Controls("ComboBox3").Value = ss(vs(16)-1)End If'纹理图案e.Form.Controls("RadioButton2").Checked = vs(17)ss = e.Form.Controls("ComboBox4").ComboList.Split(Chr(13)) e.Form.Controls("ComboBox4").Value = ss(vs(18)-1)'背景图片e.Form.Controls("RadioButton3").Checked = vs(19)e.Form.Controls("TextBox2").Value = vs(20)'标题e.Form.Controls("TextBox3").Value = vs(21)'图例e.Form.Controls("ComboBox5").Value = vs(22)End If图表外观_Button1_Clicke.Form.Close图表外观_Button2_ClickDim s As New Windows.Forms.FontDialogs.ShowColor = Trues.Font = e.Form.Controls("TextBox1").Fonts.Color = e.Form.Controls("TextBox1").ForeColorIf s.ShowDialog = DialogResult.OK Thene.Form.Controls("TextBox1").Font = s.Fonte.Form.Controls("TextBox1").ForeColor = s.ColorEnd If图表外观_Button4_ClickDim style,weight,gradient,texture As IntegerDim r1,g1,b1,r2,g2,b2,r3,g3,b3 As Integer'字体设置Dim fn As String = e.Form.Controls("TextBox1")Dim fs As Integer = e.Form.Controls("TextBox1").Font.Style Dim fsize As Integer = e.Form.Controls("TextBox1").Font.Size Dim RGBColor As Color = e.Form.Controls("TextBox1").ForeColor r1 = RGBColor.Rg1 = RGBColor.Gb1 = RGBColor.B'边框样式Select e.Form.Controls("ComboBox1").ValueCase "无"style = 0Case "实线"style = 1Case "不连续线"style = 2Case "单点连续线"style = 3Case "单点单线结合"Case "双点单线结合"style = 5End Select'边框颜色RGBColor = e.Form.Controls("ColorLabel1").BackColor r2 = RGBColor.Rg2 = RGBColor.Gb2 = RGBColor.B'边框粗细Select e.Form.Controls("ComboBox2").ValueCase "最细"weight = 1Case "细"weight = 2Case "中等"weight = 3Case "粗"weight = 4End Select'填充颜色RGBColor = e.Form.Controls("ColorLabel2").BackColor r3 = RGBColor.Rg3 = RGBColor.Gb3 = RGBColor.B'渐变方向Select e.Form.Controls("ComboBox3").ValueCase "水平"gradient = 1Case "垂直"gradient = 2Case "斜上"gradient = 3Case "斜下"gradient = 4Case "角部辐射"gradient = 5Case "中心辐射"gradient = 7End Select'纹理图案Select e.Form.Controls("ComboBox4").ValueCase "纸莎草纸"texture = 1Case "画布"texture = 2Case "斜纹布"texture = 3Case "编织物"texture = 4Case "水滴"texture = 5Case "纸袋"texture = 6Case "鱼类化石"Case "沙滩"texture = 8Case "绿色大理石"texture = 9Case "白色大理石"texture = 10Case "褐色大理石"texture = 11Case "花岗岩"texture = 12Case "新闻纸"texture = 13Case "再生纸"texture = 14Case "羊皮纸"texture = 15Case "信纸"texture = 16Case "蓝色面巾纸"texture = 17Case "粉色面巾纸"texture = 18Case "紫色网格"texture = 19Case "花束"texture = 20Case "软木塞"texture = 21Case "胡桃"texture = 22Case "栎木"texture = 23Case "深色木质"texture = 24End Select'其它设置Dim sfxg As Boolean = e.Form.Controls("CheckBox1").CheckedDim rd1 As Boolean = e.Form.Controls("RadioButton1").CheckedDim rd2 As Boolean = e.Form.Controls("RadioButton2").CheckedDim rd3 As Boolean = e.Form.Controls("RadioButton3").CheckedDim f As String = e.Form.Controls("TextBox2").ValueDim bt As String = e.Form.Controls("TextBox3").ValueDim wz As String = e.Form.Controls("ComboBox5").Value'保存设置Dim str As String = fn & "," & fs & "," & fsize & "," & r1 & "," & g1 & "," & b1 & _"," & style & "," & r2 & "," & g2 & "," & b2 & "," & weight & _"," & r3 & "," & g3 & "," & b3 & "," & sfxg & _"," & rd1 & "," & gradient & "," & rd2 & "," & texture & "," & rd3 & "," & f & "," & bt & "," & wz f = ProjectPath & "Net\Chart" '检查路径是否存在If Not FileSys.DirectoryExists(f) ThenFileSys.CreateDirectory(f)End IfDim lx As String = exStrf = f & "\" & lx & ".txt" '保存文件名If lx.Contains("数据系列") Thenf = f.Replace(lx,lx.SubString(1))str = str & "ㄉ"If FileSys.FileExists(f) ThenDim vs As String() = FileSys.ReadAllText(f).Split("ㄉ") Dim qtz As String = vs(1)str = str & qtzEnd IfEnd IfFileSys.WriteAllText(f,str,False)e.Form.Close图表外观_CheckBox1_CheckedChangede.Form.Controls("GroupBox2").Enabled = e.Sender.Checked图表外观_RadioButton1_CheckedChangede.Form.Controls("ComboBox3").Enabled = e.Sender.Checked图表外观_RadioButton2_CheckedChangede.Form.Controls("ComboBox4").Enabled = e.Sender.Checked图表外观_RadioButton3_CheckedChangede.Form.Controls("TextBox1").Enabled = e.Sender.Checked图表外观_TextBox2_DoubleClickDim f As New OpenFileDialogf.Filter= "图片文件|*.jpg;*.bmp;*.gif"If f.ShowDialog = DialogResult.Ok Thene.Form.Controls("TextBox1").Value =f.FileNameEnd If自定义函数App_ChartNumDim tblx As StringSelect Case Args(0)Case 51tblx = "柱形图,簇状柱形图"Case 52tblx = "柱形图,堆积柱形图"Case 53tblx = "柱形图,百分比堆积柱形图"Case 57tblx = "条形图,簇状条形图"Case 58tblx = "条形图,堆积条形图"Case 59tblx = "条形图,百分比堆积条形图"Case 4tblx = "折线图,折线图"Case 65tblx = "折线图,数据点折线图"Case 63tblx = "折线图,堆积折线图"Case 66tblx = "折线图,堆积数据点折线图"Case 64tblx = "折线图,百分比堆积折线图"Case 67tblx = "折线图,百分比堆积数据点折线图"Case 1tblx = "面积图,面积图"Case 76tblx = "面积图,堆积面积图"Case 77tblx = "面积图,百分比堆积面积图"End SelectReturn tblxApp_ChartsDim lst As StringSelect Case Args(0)Case "柱形图"lst = "簇状柱形图|三维簇状柱形图|堆积柱形图|三维堆积柱形图|百分比堆积柱形图|三维百分比堆积柱形图|三维柱形图"Case "条形图"lst = "簇状条形图|三维簇状条形图|堆积条形图|三维堆积条形图|百分比堆积条形图|三维百分比堆积条形图"Case "折线图"lst = "折线图|数据点折线图|堆积折线图|堆积数据点折线图|百分比堆积折线图|百分比堆积数据点折线图|三维折线图"Case "饼图"lst = "饼图|分离型饼图|三维饼图|三维分离型饼图|复合饼图|复合条饼图"Case "面积图"lst = "面积图|三维面积图|堆积面积图|三维堆积面积图|百分比堆积面积图|三维百分比堆积面积图" Case "圆柱图"lst = "柱形圆柱图|条形圆柱图|堆积柱形圆柱图|堆积条形圆柱图|百分比堆积柱形圆柱图|百分比堆积条形圆柱图|三维柱形圆柱图"Case "圆锥图"lst = "柱形圆锥图|条形圆锥图|堆积柱形圆锥图|堆积条形圆锥图|百分比堆积柱形圆锥图|百分比堆积条形圆锥图|三维柱形圆锥图"Case "棱锥图"lst = "柱形棱锥图|条形棱锥图|堆积柱形棱锥图|堆积条形棱锥图|百分比堆积柱形棱锥图|百分比堆积条形棱锥图|三维柱形棱锥图"End SelectReturn lstApp_ChartTypeDim tblx As IntegerSelect Case Args(0)Case "柱形图"Select Case Args(1)Case "簇状柱形图"tblx = 51Case "三维簇状柱形图"tblx = 54Case "堆积柱形图"tblx = 52Case "三维堆积柱形图"tblx = 55Case "百分比堆积柱形图"tblx = 53Case "三维百分比堆积柱形图" tblx = 56Case "三维柱形图"tblx = -4100End SelectCase "条形图"Select Case Args(1)Case "簇状条形图"tblx = 57Case "三维簇状条形图"tblx = 60Case "堆积条形图"tblx = 58Case "三维堆积条形图"tblx = 61Case "百分比堆积条形图"tblx = 59Case "三维百分比堆积条形图" tblx = 62End SelectCase "折线图"Select Case Args(1)Case "折线图"tblx = 4Case "数据点折线图"tblx = 65Case "堆积折线图"tblx = 63Case "堆积数据点折线图"tblx = 66Case "百分比堆积折线图"tblx = 64Case "百分比堆积数据点折线图" tblx = 67Case "三维折线图"tblx = -4101End SelectCase "饼图"Select Case Args(1)Case "饼图"tblx = 5Case "分离型饼图"tblx = 69Case "三维饼图"tblx = -4102。

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

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

菜鸟也能用foxtable开发自己的应用程序整理篇(word版本)第一部分所需要的文件及讲解提纲1.创建我们的第一张表——会员表表结构如下图:同时设置字段的类型,其他的暂时不要考虑;2.分析我们的第一张表,看看是否有什么事件会发生?可以按照以下的思路去分析这样,一个一个部分的来做1)增加的时候是否有什么动作发生?当添加一个新会员的时候,各个字段的状态会员卡号,默认为会员编号;会员等级,默认为普通;卡片状态,默认为正常;过期时间,默认为今天+一年;卡片余额,默认为0;积分数量,默认为0;折扣字段怎么操作呢?这些分析完毕之后,想想怎么达成你的目的呢?既然是新增的时候发生的事情,那么就找到表事件当我们点击datarowadding的时候,就会看到帮助的动态提示DataRowAdding增加一行时执行,此时新增行(DataRow)已经创建,但并未真正增加到DataTable中,通常在此处对新增行进行默认值的设置。

e参数属性:DataTable:返回增加行的数据表。

DataRow:返回新增加的行。

示例一例如希望新增行的日期设为当前系统日期,姓名设为当前登录用户名,可以将事件的代码设置为:e.DataRow("日期") =Date.Today()e.DataRow("姓名") = 有了这个提示,以上的内容是不是就迎刃而解了呢?是不是觉得其实弄这个也挺简单的嘛!代码如下: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.希望此表作为副本表或者其他表的时候,怎么双击都可以弹出一个窗口;我们查看一下表的属性,观察事件这些事件,主要涉及的是编辑的控制,我们需要的是双击单元格的时候,取消其默认的编辑功能,同时打开某个窗口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据绑定最简单的绑定首先还是打开我们的示例文件“专业报表.Table”,然后在命令窗口执行下面的代码:Dim doc As New PrintDocDim rt As New prt.RenderTextrt.DataBinding.DataSource = BindTables("订单") '将rt绑定到订单表rt.Text= "[Fields!产品.Value]" '设置打印字段doc.body.Children.Add(rt)doc.Preview()上述代码会打印出订单表中每一行的产品名称。

DataBinding用于设置打印对象的绑定属性,该属性包括一些子属性,DataSource表示数据来源,数据来源可以是Table,还可以是数组或者集合。

需要注意的是,不能直接绑定到Table,如果要绑定到Table,必须用BindTables来设置,例如:rt.DataBinding.DataSource = BindTables("订单")如果对象的内容来自于某一列,其Text属性的设置格式如下:[Fields!列名称.Value]使用表达式在命令窗口执行下面的代码:Dim doc As New PrintDocDim rt As New prt.RenderTextrt.DataBinding.DataSource = BindTables("订单") '将rt绑定到订单表rt.Text= "[Math.Round(Fields!金额.V alue,1)]" '设置打印表达式doc.body.Children.Add(rt)doc.Preview()留意方括号中的内容:Math.Round(Fields!金额.Value,1)意思是打印的时候将金额列的内容,保留一位小数,你可以在Text属性中使用Foxtable支持的所有函数。

注意表达式必须用方括号括起来。

日期的打印为了得到常规的日期格式,可以利用Format格式化日期数据:Dim doc As New PrintDocDim rt As New prt.RenderTextrt.DataBinding.DataSource = BindTables("订单") '将rt绑定到订单表rt.Text= "[Format(Fields!日期.Value,""yyyy-MM-dd"")]"doc.body.Children.Add(rt)doc.Preview()要记得对于字符串中的每一个双引号,都必须用两个双引号来表示。

在命令窗口执行下面的代码:绑定多个字段为了打印出订单表中的日期和数量,在命令窗口执行下面的代码:需要使用容器(RenderArea),将原来的打印对象加入到容器中,这些打印对象不再需要设置绑定,只需为容器设置绑定即可。

例如:Dim doc As New PrintDocDim rt As New prt.RenderTextDim ra As New prt.RenderAreara.Style.Spacing.Bottom = 2ra.DataBinding.DataSource = BindTables("订单") '将容器绑定到订单表rt.Text = "[Fields!日期.Value]"ra.Children.Add(rt) '将打印对象添加到容器中rt = New prt.RenderTextrt.Text= "[Fields!数量.Value]"ra.Children.Add(rt)doc.body.Children.Add(ra)doc.Preview()上述的代码将依次打印每一个订单的日期和数量。

打印标签有了绑定,打印标签比以前更简单。

示例Dim doc As New PrintDoc '定义一个报表Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRightDim ra As New prt.RenderAreaDim rt As prt.RenderTextra.Width = 40 '设置标签宽度ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割ra.Style.Spacing.Right = 2 '设置标签之间的所有和上下间隔为2毫米ra.Style.Spacing.Bottom = 2ra.Style.Padding.All = 1 ' 标签内容距离边框为1毫米ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) '设置边框ra.DataBinding.DataSource = BindTables("员工") '将容器绑定到员工表Doc.Body.ChildRen.Add(ra) '将容器加入到报表中rt = New prt.RenderTextrt.Text = "姓名:[Fields!姓名.Value]"ra.Children.Add(rt) '添加到容器中rt = New prt.RenderTextrt.Text = "部门:[Fields!部门.Value]"ra.Children.Add(rt) '添加到容器中rt = New prt.RenderTextrt.Text = "职务:[Fields!职务.Value]"ra.Children.Add(rt) '添加到容器中Doc.Preview() '预览报表表格与绑定行组也可以设置绑定,这样我们可以很方便地将一个表格绑定到数据表。

例如,打印订单表中的某些列,代码非常简单:Dim doc As New PrintDocDim rt As New prt.RenderTableDim tb as Table = Tables("订单")Dim ColNames As String() = New String(){"产品", "客户","单价", "数量", "金额"}For c As integer = 0 To ColNames.Length -1rt.Cells(0,c).Text = ColNames(c)rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidthrt.Cells(1, c).Text = "[Fields!" & ColNames(c) & ".Value]" '设置绑定表达式Nextrt.RowGroups(0,1).Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '将第一行作为表头。

rt.RowGroups(1,1).DataBinding.DataSource = BindTables("订单") '将第二行绑定到订单表doc.Body.Children.Add(rt)doc.Preview()注意这一行代码:rt.RowGroups(1,1).DataBinding.DataSource = BindTables("订单") '将第二行绑定到订单表该行代码将表格的第二行绑定到订单表,这样第二行将根据订单表中的每一行数据,自动生成副本,完成整个表格的打印。

FOXtable编程基本概念DataTable和TableFoxtable中有一个集合DataTables,通过该集合可以获得指定名称的表,例如:DataTables("产品") '产品表DataTables("客户") '客户表DataTables("订单") '订单表实际上你是看不到DataTable的,你看到的是Table,也就是说,上面的三个图,实际上就是三个Table。

那么什么是Table呢?你可以这样理解,DataTable就像一个仓库,所有从数据文件中加载的数据,都存放在这里,而且这个仓库是不直接面对用户的;而Table就像一个展厅,是负责和用户打交道的,这个展厅(Table)从仓库(DataTable)中取得数据,并呈现给用户。

同样,Foxtable中也有一个集合Tables,通过该集合可以获得指定名称的Table,在没有建立关联的情况下,我们这个简化的订单管理系统包括三个Table,分别是:Tables("客户")Tables("订单")在初始的情况下,Table会从DataTable中提取所有数据呈现给用户,如果你设置了筛选条件,Table就会从DataTable提取符合筛选条件的数据,然后呈现给用户。

例如订单表有1000行数据,那么DataTables("订单")从头到尾,始终都会有1000行数据,不受筛选的影响。

而Tables("订单")却不一样,如果没有进行筛选,那么Tables("订单")也会包括所有数据,也就是1000行数据全部可见。

如果现在从中筛选出产品为PD01的订单,且PD01的订单是200个,那么经过筛选后,Tables("订单")会包括200行数据,也就是你看到的那200个产品为PD01的订单。

所以关于DataTable和Table的关系,较为完整的描述是:从数据文件加载到Foxtable中的数据,是存放在DataTable中的,它就像一个仓库,不直接面对用户;而Table就像一个展厅,是负责和用户打交道的,它根据指令从仓库(DataTable)中提取符合条件的数据,然后呈现给用户;通过菜单进行的日常数据管理工作,例如增加行、删除行、排序、筛选、汇总等等,都是在Table中进行的;除了编程,用户没有办法直接对DataTable进行操作,因为它是不可见的。

相关文档
最新文档