Delphi中Chart
- 格式:docx
- 大小:92.98 KB
- 文档页数:15
delphi checklistbox用法Delphi中的CheckListBox是一个复选框列表,它允许用户选择多个项目。
在本文中,将介绍如何使用Delphi的CheckListBox控件。
1. 添加CheckListBox控件在Delphi的窗体设计器中,将CheckListBox控件从工具箱拖放到窗体上。
然后可以设置控件的属性,例如名称、位置和大小。
2. 添加项目在程序运行时,可以使用代码向CheckListBox控件添加项目。
可以使用Add方法添加单个项目,也可以使用AddStrings方法添加多个项目。
例如:CheckListBox1.Items.Add('项目1');CheckListBox1.Items.Add('项目2');CheckListBox1.Items.AddStrings(['项目3', '项目4', '项目5']);3. 选择项目通过设置ItemIndex属性或使用Selected数组,可以选择CheckListBox控件中的项目。
例如:CheckListBox1.ItemIndex := 0;CheckListBox1.Selected[1] := True;4. 获取选中的项目使用Checked数组可以获取选中的项目列表。
例如:for i := 0 to CheckListBox1.Items.Count - 1 dobeginif CheckListBox1.Checked[i] thenMemo1.Lines.Add(CheckListBox1.Items[i]);end5. 自定义外观可以使用CheckListBox的ItemHeight、ItemWidth、BorderStyle 和Color等属性自定义控件的外观。
例如:CheckListBox1.ItemHeight := 30;CheckListBox1.ItemWidth := 200;CheckListBox1.BorderStyle := bsSingle;CheckListBox1.Color := clYellow;这些方法和属性是使用Delphi的CheckListBox控件的基本用法。
怎么在delphi中读取Excel数据(各种详细操作)转( 一) 使用动态创建的方法首先创建Excel 对象,使用ComObj :VarExcelApp : Variant ;ExcelApp := CreateOleObject ( '' Excel.Application '' ) ;1 ) 显示当前窗口:ExcelApp.Visible := True ;2 ) 更改Excel 标题栏:ExcelApp.Caption := '' 应用程序调用Microsoft Excel '' ;3 ) 添加新工作簿:ExcelApp.WorkBooks.Add ;4 ) 打开已存在的工作簿:ExcelApp.WorkBooks.Open ( '' C : \Excel\Demo.xls '' ) ;5 ) 设置第2个工作表为活动工作表:ExcelApp.WorkSheets [ 2 ] .Activate ;或ExcelApp.WorksSheets [ '' Sheet2 '' ] .Activate ;6 ) 给单元格赋值:ExcelApp.Cells [ 1 , 4 ] .Value := '' 第一行第四列'' ;7 ) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns [ 1 ] .ColumnsWidth := 5 ;8 ) 设置指定行的高度(单位:磅)(1磅=0.035 厘米),以第二行为例:ExcelApp.ActiveSheet.Rows [ 2 ] .RowHeight := 1 / 0.035 ; // 1厘米9 ) 在第8行之前插入分页符:ExcelApp.WorkSheets [ 1 ] .Rows [ 8 ] .PageBreak := 1 ;10 ) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns [ 4 ] .PageBreak := 0 ;- 11 ) 指定边框线宽度:ExcelApp.ActiveSheet.Range [ '' B3 : D4 '' ] .Borders [ 2 ] .Weight := 3 ;1 - 左2 - 右3 - 顶4 - 底5 - 斜( \ )6 - 斜( / )12 ) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells [ 1 , 4 ] .ClearContents ;13 ) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows [ 1 ] := '' 隶书'' ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Color := clBlue ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Bold := True ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.UnderLine := True ;14 ) 进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '' 报表演示'' ;b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '' 第&P页'' ;c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2 / 0.035 ;d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3 / 0.035 ;e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2 / 0.035 ;f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2 / 0.035 ;g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2 / 0.035 ;h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2 / 0.035 ;i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2 / 0.035 ;j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2 / 0.035 ;k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True ;15 ) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy ;b.拷贝指定区域:ExcelApp.ActiveSheet.Range [ '' A1 : E2 '' ] .Copy ;- c.从A1位置开始粘贴:ExcelApp.ActiveSheet.Range. [ '' A1 '' ] .PasteSpecial ;d.从文件尾部开始粘贴:ExcelApp.ActiveSheet.Range.PasteSpecial ;16 ) 插入一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Insert ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Insert ;17 ) 删除一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Delete ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Delete ;18 ) 打印预览工作表:ExcelApp.ActiveSheet.PrintPreview ;19 ) 打印输出工作表:ExcelApp.ActiveSheet.PrintOut ;20 ) 工作表保存:If Not ExcelApp.ActiveWorkBook.Saved ThenExcelApp.ActiveSheet.PrintPreview ;21 ) 工作表另存为:ExcelApp.SaveAs ( '' C : \Excel\Demo1.xls '' ) ;22 ) 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True ;23 ) 关闭工作簿:ExcelApp.WorkBooks.Close ;24 ) 退出Excel:ExcelApp.Quit ;( 二) 使用Delphi 控件方法在Form中分别放入ExcelApplication , ExcelWorkbook和ExcelWorksheet。
一、TeeChart使用指南1.添加引用一下两个DLL文件到项目中。
工具箱中右键打开选择项,如上图所示在筛选器中打开浏览找到项目中的TeeChart.dll文件点击打开,完成后工具栏中将会出现teechart控件的图表2.创建一个webchart控件到页面中3.编辑属性4.在上图中添加series ,设置teeChart Gallery属性5.设置数据库连接6.必要参数设置如何在项目中使用破解版本的TeeChart?1、建一个aspx文件Default.aspx;2、在设计视图中拖进去一个控件;3、在属性窗口的杂项中,将GetChartFile设置成GetChart.aspx(默认)将TempChart属性设置成Session新建aspx文件GetChart.aspx,在GetChart.aspx.cs中写入以下代码: using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;///<summary>///为了覆盖session变量中的图表, 新建一个页面,命名为GetChart.aspx///</summary>public partial class GetChart : System.Web.UI.Page{///<summary>///将图片存储在session变量中///</summary>///<param name="sender"></param>///<param name="e"></param>protected void Page_Load(object sender, EventArgs e){string chartName = Request.QueryString["Chart"];if (Session[chartName] != null){System.IO.MemoryStream chartStream = newSystem.IO.MemoryStream();chartStream =((System.IO.MemoryStream)Session[chartName]);Response.OutputStream.Write(chartStream.ToArray(), 0, (int)chartStream.Length);chartStream.Close();Session.Remove(chartName);}}}如何将GetChart.aspx拷贝到当前的工程目录下。
怎么在delphi中读取Excel数据(各种详细操作)转( 一) 使用动态创建的方法首先创建Excel 对象,使用ComObj :VarExcelApp : Variant ;ExcelApp := CreateOleObject ( '' Excel.Application '' ) ;1 ) 显示当前窗口:ExcelApp.Visible := True ;2 ) 更改Excel 标题栏:ExcelApp.Caption := '' 应用程序调用Microsoft Excel '' ;3 ) 添加新工作簿:ExcelApp.WorkBooks.Add ;4 ) 打开已存在的工作簿:ExcelApp.WorkBooks.Open ( '' C : \Excel\Demo.xls '' ) ;5 ) 设置第2个工作表为活动工作表:ExcelApp.WorkSheets [ 2 ] .Activate ;或ExcelApp.WorksSheets [ '' Sheet2 '' ] .Activate ;6 ) 给单元格赋值:ExcelApp.Cells [ 1 , 4 ] .Value := '' 第一行第四列'' ;7 ) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns [ 1 ] .ColumnsWidth := 5 ;8 ) 设置指定行的高度(单位:磅)(1磅=0.035 厘米),以第二行为例:ExcelApp.ActiveSheet.Rows [ 2 ] .RowHeight := 1 / 0.035 ; // 1厘米9 ) 在第8行之前插入分页符:ExcelApp.WorkSheets [ 1 ] .Rows [ 8 ] .PageBreak := 1 ;10 ) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns [ 4 ] .PageBreak := 0 ;11 ) 指定边框线宽度:ExcelApp.ActiveSheet.Range [ '' B3 : D4 '' ] .Borders [ 2 ] .Weight := 3 ;1 - 左2 - 右3 - 顶4 - 底5 - 斜( \ )6 - 斜( / )12 ) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells [ 1 , 4 ] .ClearContents ;13 ) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows [ 1 ] := '' 隶书'' ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Color := clBlue ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Bold := True ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.UnderLine := True ;14 ) 进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '' 报表演示'' ;b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '' 第&P页'' ;c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2 / 0.035 ;d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3 / 0.035 ;e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2 / 0.035 ;f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2 / 0.035 ;g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2 / 0.035 ;h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2 / 0.035 ;i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2 / 0.035 ;j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2 / 0.035 ;k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True ;15 ) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy ;b.拷贝指定区域:ExcelApp.ActiveSheet.Range [ '' A1 : E2 '' ] .Copy ;c.从A1位置开始粘贴:ExcelApp.ActiveSheet.Range. [ '' A1 '' ] .PasteSpecial ;d.从文件尾部开始粘贴:ExcelApp.ActiveSheet.Range.PasteSpecial ;16 ) 插入一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Insert ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Insert ;17 ) 删除一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Delete ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Delete ;18 ) 打印预览工作表:ExcelApp.ActiveSheet.PrintPreview ;19 ) 打印输出工作表:ExcelApp.ActiveSheet.PrintOut ;20 ) 工作表保存:If Not ExcelApp.ActiveWorkBook.Saved ThenExcelApp.ActiveSheet.PrintPreview ;21 ) 工作表另存为:ExcelApp.SaveAs ( '' C : \Excel\Demo1.xls '' ) ;22 ) 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True ;23 ) 关闭工作簿:ExcelApp.WorkBooks.Close ;24 ) 退出Excel:ExcelApp.Quit ;( 二) 使用Delphi 控件方法在Form中分别放入ExcelApplication , ExcelWorkbook和ExcelWorksheet。
[新手必看]delphi部分的控件属性.方法.事件及常用函数的中文说明(定期更新)1. TmainMemu控件该控件是一个标准的菜单控件,运用它为窗口提供菜单。
该对象的层次结构为:TObject—TPersistent--TCompoment—TMenu。
属性1-AutoMetge:Boolean功能:用于确定非MID程序中非主Form上的菜单要不要和主Form的菜单合并。
主Form菜单AutoMerge的特性总是False。
此外,还要设置菜单项的GroupInd ex属性。
2-BiDiMode:TBiDiMode功能:控制菜单的布置模式,是从左至右,还是从右至左。
3-Handle:HMENU功能:菜单窗口句柄。
4-Images:TImagList功能:出现在菜单项左边的图像列表。
菜单项通过设置它们的ImageIndex属性,以确定图像列表中的哪—个图像出现在菜单项的左边。
5-Items:TMenuItem功能:菜单项,描述了菜单的元素。
6-OwnerDraw:Boolean功能:确定菜单项是否可以由应用程序来画。
7-ParentBiDiMode:Boolean功能:确定BiDiMode属性是否从父辈继承而来,菜单的父辈一般为Form。
方法1-GetOle2AcceleratorTabel:(var AccelTable:HAccel;var AccelCount:Int eger;Group:array of Integer)功能:返回主菜单的加速键表,其参数如下AccelTabel:设置加速键表的句柄。
AccelCount:设置加速键的总数。
Groups:即GroupIndex的值。
2-Merge:功能:组合Form上的一个主菜单与另一个非MDI应用程序的主菜单。
调用Merg e方法将另一个主菜单组合进该菜单。
参数Menu指定了要合并的菜单3-PopulateOle2Menu:(ShareMenu:HMenu; Groups:array of Integer; var W idths:array of Longint)功能:组装OLE菜单。
TeeChart经验总结1.安装我使用的是Delphi5,所以所有的测试,代码均为D5版本,看的时候要有一颗兼容的心.第三方组件,尽量使用有源码的版本,方便修改问题,也方便看懂功能,不然改都没法改.安装TeeChart的话,推荐TeeChart Pro v8.01with Full Source。
目录中有一个exe名为:TeeRecompile.exe..运行它我不记得是否会自动给环境里加入Sources目录了.请在安装完成后检查Tools->Environment Options->Library->Directories->Library Path,是否包含了解压安装目录中的Sources目录.目前为止..安装结束..老版本的TeeChart安装,需要先卸载自身的TChart组件,也就是在Component->Install Packages中不加载Borland Decision Cube Components,然后再使用TeeChart的bpg安装Dcl*.dpk,然后添加Library Path.1TeeChart经验总结2.初识.完成了安装以后,在additional选项卡里,就可以选择TChart进行使用在Options->Language->Change中,可以修改TeeChart Editor为中文菜单,但是不推荐这样做,毕竟写代码还是得用英文的.Edit Chart:打开TeeChart Editor界面,可以进行Series,Axis,Wall之类的参数编辑.Print Preview:打印预览...Export Chart:可以将Chart导出图片之类的格式.Custom Axes:可以编辑自定义Axis,也就是轴Seires:可以编辑曲线序列,也就是数据集合.先贴一张TeeChart Editor的图.在编辑器里,可以对TChart的一系列参数进行修改,基本上所有的TChart功能都可以在Editor里通过修改参数的所见即所得的方式来得以实现.首先,TChart有一个Panel,这个是Axis,Series显示的基础.Axis也就是一般所说的轴,比如常说的坐标系里的X轴Y轴.Series顾名思义,是一个序列,也就是数据序列,Series要绑定在Axis才会显示出来,因为TeeChart里的Series种类众多,有常见的Line,Fastline,Bar,Point,Pie等等,所以抽象的理解其为一个离散的数据集合比2较好.先来看一个Demo,并说明这个Demo用到了TeeChart里的哪些功能,在以后的文章里会逐步解释名词定.义和功能的实现用到了2个自定义的Axis,4个FastLine的Sereis,将Legend(图列说明,也就是Series的名称颜色的集合显示)显示出来.使用了Titles中的Title,用于显示一些与图相关的信息.用到了几个Tools,一个用来显示Paging,一个用来显示所看到的游标内容.TeeChart经验总结3.Panel和WallsWalls为Series表现的区域,有Left,Right,Bottom,Back之分,其中Left,Right,Bottom都为3D显示时候用的,Back就是Series绘图区域.先说Panel,看图:34Color 是用来修改Panel 显示的颜色,如果Walls 的Transparent 属性为True,那么都会显示这个颜色,如果为False,就可以自行定义颜色显示.Bak Image Inside,顾名思义,就是让背景图片是否显示在Back Wall 里.Borders:用来设计Panel 的边缘,都很简单.Separation:是和Walls 的间隔.5Margins:边距,用来设置Panel 与Walls 的边距.有两种设置方式,一种是百分比,一种是像素.Gradient:渐变.背景的颜色渐变,这个应该是TeeChart 的新功能,Title,Tools,Panel,Walls 等都可以设置这个属性,这个功能不算复杂,不多介绍了.只要试试就明白了.6Shadow:阴影,同样很多部分都有这个属性.也一样..这个属性没什么好多说的.Image:图像.可以载入一个图像来替代背景.这个功能有点意思..因为还提供了Filters(滤镜).因为Axis 显示的时候是在Panel,所以Margins 可能因为Axis 的多少而需要调节.Titles,Legend 也同样要显示在Panel 上,需要考虑一下布局的问题.接下来说Walls,之前说过了Walls 是用来显示Series 的地方,而且Left,Right,Bottom 都是用来参与3D 效果的显示.Back Wall 比其他的Wall 多了一个Shadow 的属性,其他基本都一样,所以以下就只贴Back Wall 的图了.7Visible Walls:是否显示Walls,旁边的Size 是用于3D 显示时,Wall 的厚度.Color,Border,Gradient,Image,Shadow 这些属性基本和Panel 的一样.Pattern 为Wall 的填充图案.Position 表示该Wall 的显示区域.独立Wall 里的Size,也是指该Wall 的厚度.Transparency 依然是透明度的意思.因为Wall 为Series 的显示区域,在用色上除了要考虑习惯以外,打印图片时,最好将Gradient 取消,将Wall 和Panel 的颜色变为白色,这样可以节省打印的油墨.TeeChart 经验总结4.Titles 和LegendTitles 分为四个:Title,SubTitle,SubFoot,Foot.这4个的区别其实就是默认的位置.从名字也可以猜出.8Visible:可见.Adjust Frame:适应框架.应该是根据Text 内容调整以适应大小.Alignment:排列位置,在Positon 如果使用Custom,则这个属性失效.Text:该Title 显示的文字内容.Edit:编辑Text.Custom:前面提过了,可以自定义Title 的显示位置.Vert.Margin:垂直空白,是指和Wall 之间的距离.当Custom 选择时,则无效.9Color:背影颜色.Pattern:图案Transparent:透明,和Panel 属性一致(因为Title 显示在Panel 上)Transparency:透明度.其他如:Text,Gradient,Shadow,Picture 就不一一介绍了,都是常规属性.记住一点当Format->Transparent 被选择后,Gradient,Shadow,Picture 均失效,都继承Panel 的相应属性.//----------------------------------------------------------------------------------------------------------Legend 为Series 的说明,可以描述Series 的Names,Values,Last Values,等等.Visible:显示LegendInverted:反转显示顺序Font Series Color:使显示字体的颜色与Series颜色一致.Legend Style:Legend的显示内容,Automatic(自动),Series Names(名称,确切的说其实是Series的Title),Series Values(数据),Last Values(最后一个点的数据,所有的Series),Series Groups(没用过...). Text Value:和Legend Style对应的一些设置,不细说了.No Check Boxes:是否在对应Series前显示CheckBox或者RadioButton.可以直接选择是否显示该Series 在曲线上.Vert.Spacing:垂直间隔..Dividing Line:每个Item之间的分隔线Resize Chart,根据Legend的大小来调整Wall的大小Title:Legend的标题.10Border,Text,Gradient,Shadow,Picture这些和之前一些属性类似.TeeChart经验总结5.Axis开始写一些比较重要的内容了.Axis,坐标系里的坐标轴.TeeChart默认两个X轴:Top,Bottom;有若干个Y 轴.TeeChart的Y轴,可以显示在Wall的左边,也可以显示在Wall的右边,可以100%显示,也可以分段显示,意思就是可以在一个Axis的位置上分段显示多个Axis,每个Axis占用一部分.:如下图下面介绍一下Axis的属性左上角的Visible,可以关闭所有Axis的显示,之前提过Series的显示依赖于Axis,如果Axis被隐藏,则Series同样被隐藏.Behind:这个是3D显示用到的属性,将Axis显示在BackWall上还是显示在最前面.Left Axis,Right Axis,Top Axis,Bottom Axis,Depth Right,Depth Top:和名字的说法一样,都是TeeChart默认创建的Axis,也可以根据需要自行定义Axis.11Scales->Options->Automatic:根据所属该Seires的值自行设置Minimum,Maximum,Increment.Visible:单独控制该Axis的显示.Inverted:反向显示.Logarithmic:对数.可以以某对数为底,处理显示值.比如LogP-H图这种.Minimum,Maximum,Increment:这些就是设置Axis显示的最小值,最大值,以及增量..Titles->用来设置Axis显示的名称,也可以设置显示的角度Labels->显示Axis每个增量的数值.Mutile-Line:多行显示.Round First:感觉像是对第一个值取整.Label On Axis:在Axis也标记.Alternate:交替显示.Min.Separation%:Label的最小分隔.Style:显示风格.Size:Label占用的大小,如果设置为0,就是自动.Angle:Label显示的角度.Ticks->记号.Axis上小分隔的记号.1213Grid->设置Axis 的显示格线.如果Y 轴过多,最好只显示一个Axis 的Grid,不然显示起来会很乱.Grid..:用来设置线的属性,Width,Space 之类的.Z:3D 显示时用到的属性.Draw every:每几个分隔画一条Grid 线.Minor..:Grid 中的Grid.在前面Grid 中继续画Grid.Position->对于Vertical/Horizontal Axis 比较多的时候,Position 的设置就显得尤其重要了.Position %:设置Axis 的位置,如果是Vertical,没有选中Other side,那就是默认在左边的Axis,正就是向右,负就是向左.Start%,End%:这个就是前面那个多个Axis 实现方式.即每个Axis 占用的范围.Z%:3D 显示使用.Other side:Vertical Axis,不选中为Left,选中为Right;Horizontal Axis,不选中为Bottom,选中为Top,Position%均是从Wall 的边缘开始算起.Horizontal:选中就是水平方向的Axis,不选中就是垂直方向的Axis.Other side,Horizontal 都是自定义Axis 才可以使用的.//-----------------------------------------------------------------------------------------------14这是一个Axis 设定Demo 界面.其中使用为Create 和Visbile名称为Axis 的Title最小值为Axis 的Minimum最大值为Axis 的Maximum根据最小值和最大值来计算Increment 值.单位并不是Axis 的属性,在这里只是用于显示和Series 自动判断绑定在哪个Axis 的凭据.颜色就是Axis 的Color.X 坐标轴是每页可显示的范围,因为要用到分页.坐标轴格线即是Grid,如果Vertical,Horizontal 有多个的话,最好各只显示一个Axis 的Grid.TeeChart 经验总结6.Series 之1:LineTeeChart 提供了很多类型不同的Series,下面是比较常用的.创建Series 可以通过TeeChart Editor,如下View下面,可以选择显示或者使用代码创建,如下Series Name(选中就可以修改Name,不选中可以修改Title),Series Group;可以创建Series Group进行管理.Clone可以复制一个新的Series,Change可以修改已经创建好的Series的类型.Series:=TFastLineSeries.Create(aChart);//线所在ChartSeries.ParentChart:=aChart;//指定自定义AxisSeries.CustomVertAxis:=aAxis;//线宽度Series.Pen.Width:=aPenWidth;//线颜色Series.Color:=aColor;//线名称Series.Title:=aTitle;Series常用的添加数据函数Function Add(Const AValue:Double;Const ALabel:String='';AColor:TColor=clTeeColor):Integer;overload;virtual;Function AddArray(Const Values:Array of TChartValue):Integer;overload;Function AddNull(Const Value:Double):Integer;overload;Function AddNull(Const ALabel:String=''):Integer;overload;virtual;Function AddNullXY(Const X,Y:Double;Const ALabel:String=''):Integer;virtual;Function AddX(Const AXValue:Double;Const ALabel:String='';AColor:TColor=clTeeColor):Integer;Function AddXY(Const AXValue,AYValue:Double;Const ALabel:String='';AColor:TColor=clTeeColor):Integer;virtual;Function AddY(Const AYValue:Double;Const ALabel:String='';AColor:TColor=clTeeColor):Integer;15下面开始说LineSeries.Color...:Line Series的颜色.Pattren...:还是用于3D显示的图案.Drak3D:3D阴影.Color Each,Color Each Line:每个点之间的线一种颜色,这个被选中,则Color属性无效.Clickable:可点击.Line Mode:Stairs:阶梯;Inverted:反转.OutLine:轮廓.这个功能实现的很怪,如果修改了这个,则Series Color无效.Height3D:3D显示下Line的高(厚)度.Stack:这是一个比较复杂的设置.当有多个Line Series的时候,这个属性用来表示这些个Line Series的关系.None:在3D显示中,每个Line Series一个独立的ZOrder.1617Stack,Stack100:比较Line 数值,前者使用实际值,后者使用0-100.数学比较差..不知道该如何描述.Treat Nulls:处理空值.分为:Don't Paint(不绘),Skip(跳过),Ignore(忽略).Series 里有一个基础方法AddNull.Shadow:3D 显示的时候没有试出来,2D 显示的时候很明显.Gradient:3D 显示时将Z 上颜色渐变色.18Line 其实是通过AddXY 或者类似的函数添加的点连接而成的曲线,Point 就是是否来显示这个点,以及显示这个点的属性.大部分的属性之前都介绍过.Show In Legend:显示在Legend 中.Cursor:游标,只有当之前的Clickable 被选中,这个属性才有用.Depth:单独设置Line Series 的深度,如果选择Auto,则和Chart 整体保持一致.Horizontal Axis:指定Line Series 的水平Axis.Vertical Axis:指定Line Series 的垂直Axis.DateTime:把Axis 的值设置为时间.设置这个属性只要修改Series.XValues.DateTime 或者Series.YValues.DateTime 即可.做柱形图的月份统计,这个属性经常被用到.Formats:设置显示值的格式.Show In This Editor:是否显示在TeeChart Editor内..Sorts:排序TSeriesMarksStyle=(smsValue,{1234}smsPercent,{12%}smsLabel,{Cars}smsLabelPercent,{Cars12%}smsLabelValue,{Cars1234}smsLegend,{(Legend.Style)}smsPercentTotal,{12%of1234}smsLabelPercentTotal,{Cars12%of1234}smsXValue,{1..2..3..or21/6/1996}smsXY,{123456}smsSeriesTitle,{Series1}//8.0smsPointIndex,{1..2..3...}//8.0smsPercentRelative{100%..90%..120%...}//8.0);其他的比如Arrows(箭头),Symbol(符号,这个和之前在Legend中介绍的那个属性一样),剩下的属性之前都提到过.19TeeChart经验总结7.Series之2:Bar以后不贴TeeChart Editor的图了.尽量文字说明,也方便查找属性.BarSeries.BarStyle Bar的显示类型//矩形,椎体,倒椎体//圆筒,椭圆,箭头,渐变矩形,圆锥体,斜面//斜立方体,钻石型,反箭头,倒圆锥体TBarStyle=(bsRectangle,bsPyramid,bsInvPyramid,bsCilinder,bsEllipse,bsArrow,bsRectGradient,bsCone,bsBevel,bsSlantCube,bsDiamond,bsInvArrow,bsInvCone);BarSeries.ColorEachPoint每个Bar独立颜色BarSeries.Brush.Style刷子类型,也就是Bar的显示图案BarSeries.Brush.ColorBarSeries.Brush.BackColorBarSeries.Brush.Image以上四个属性,就是TeeChart Editor里的Pattern设置.TBrushStyle=(bsSolid,bsClear,bsHorizontal,bsVertical,bsFDiagonal,bsBDiagonal,bsCross,bsDiagCross);BarSeries.Gradient渐变色,配合bsRectGradient使用.BarSeries.TickLines标记线,用于在Bar上画分隔线.BarSeries.Dark3D3D投影效果显示BarSeries.DepthBarSeries.DepthPercentBarSeries.CustomBarWidthBarSeries.BarWidthPercentBarSeries.OffsetPercent以上为设置Bar Series的深度(3D显示),深度百分比(和Chart设置的3D设置比);宽度,宽度百分比;位移(水平方向).BarSeries.Shadow用于显示阴影,在3D和2D下均可显示.BarSeries.BarPen用来设置Bar外框的一些显示属性.BarSeries.MultiBar多个Bar的显示方式.TMultiBar=(mbNone,mbSide,mbStacked,mbStacked100,mbSideAll,mbSelfStack);贴个图,比较清楚:20BarSeries.ShowInLegendBarSeries.CursorBarSeries.AutoBarSizeBarSeries.CustomHorizAxisBarSeries.CustomVertAxisBarSeries.ValueFormatBarSeries.PercentFormatBarSeries.ShowInEditor之前介绍过.BarSeries.Marks用于显示标记.Demo下面是i:Integer;beginBarSeries.Clear;for i:=1to12dobeginwith BarSeries dobeginAddXY(i,Random(1000),Format('%.2d月',[i]));end;end;end;21TeeChart经验总结8.Series之3:Horizontal Bar&AreaHorizontal Bar属性和Bar一致,只是坐标系顺时针转90度.如下图.Area如下图AreaSeries.Stairs阶梯,在Add**函数中,从N点到N+1点之间均为添加的Y值.如果AreaSeries.InvertedStairs为True,则是从N点N-1点之间均为添加的Y值.Pattern对应AreaSeries.AreaChartBrushBorder对应AreaSeries.LinePenTop对应AreaSeries.BrushArea Lines对应AreaSeries.AreaLinesPenTransparency对应AreaSeries.TransparencyDrak3D对应AreaSeries.Dark3DColor Each对应AreaSeries.ColorEachPointColor对应AreaSeries.SeriesColorTreatNulls对应AreaSeries.TreatNullsTTreatNullsStyle=(tnDontPaint,tnSkip,tnIgnore);Stack->Multi Areas对应AreaSeries.MultiAreaStack Group对应AreaSeries.StackGroupUse Origin对应eYOriginOrigin对应AreaSeries.YOrigin2223TeeChart 经验总结9.Series 之4:Pie&OthersTeeChart 自带的PieDemo 就很能说明问题.Explode biggest 对应Pie.ExplodeBiggest;将最大的一块slice 推出.Total Angle 对应Pie.AngleSize;所有slice 的总角度.Dark Border 对应Pie.DarkPen;每一块slice 的边界线.Dark 3D 对应Pie.Dark3D;slice 侧边的阴影.Patterns 对应ePatterns;是否给slice 使用图案.Multiple Pies 对应Pie.MultiPie:TMultiPie=(mpAutomatic,mpDisabled);如果Chart 内有多个Pie,如何显示.Gourp Slices.Style 对应Pie.OtherSlice.Style;TPieOtherStyle=(poNone,poBelowPercent,poBelowValue);Gourp Slices.Value 对应Pie.OtherSlice.ValueGourp bel 对应Pie.OtherSlice.TextGourp Slices.Legend 对应Pie.OtherSlice.Legend这些属性是为了使Value 低于总百分比(poBelowPercent)或者低于数值(poBelowValue)这些数值之和,显示为Label 的新slice.比如处理一些较小的值,显示为Other.Color Each slice 对应Pie.ColorEachPointColor palette对应Pie.ParentChart的ColorPaletteIndexColor对应Pie.SeriesColorAuto Mark Position对应Pie.AutoMarkPosition;自动设置Mark的位置Vertical center callout对应Pie.PieMarks.VertCenter;垂直居中显示Callout Leg size对应Pie.PieMarks.LegSize;Mark脚线的长度(以下属性和TCircledSeries通用)Circled对应Pie.Circled;显示成圆(而不是椭圆)3Dimensions对应Pie.ParentChart.View3DRotation对应Pie.RotationAngle;旋转角度Radius.Horizontal对应Pie.CustomXRadius水平半径Radius.Vertical对应Pie.CustomYRadius垂直半径(以上属性和TCircledSeries通用)Point:离线并不连接的点.常用属性之前都介绍过.Fast Line:简化版的Line,取消了3D显示,取消了Stack等功能.Horizontal Line:XY互换的Line.Horizontal Area:XY互换的Area.Bubble:泡泡.其实感觉更像是立体彩色版本的Point..Gantt:甘特图Extended:扩展.2425Financial:金融.Stats:统计.3D:Gauges:仪表.26Other:Maps:地图.2728TeeChart经验总结10.Zoom&ScrollZoom.Allow对应TheChart.Zoom.Allow;是否允许Zoom.Zoom.Animated对应TheChart.Zoom.Animated;演示Zoom的动画.Zoom.Steps对应TheChart.Zoom.AnimatedSteps;Zoom动画的步数.Zoom.Pen对应TheChart.Pen;Zoom.Pattern对应TheChart.Zoom.Brush;Zoom.Minimum pixels对应TheChart.Zoom.MinimumPixels;最小可执行Zoom的像素,即用户选中的Zoom框的最小大小.Zoom.Direction对应TheChart.Zoom.Direction;Zoom的方向,TTeeZoomDirection=(tzdHorizontal, tzdVertical,tzdBoth);Zoom.Mouse Button对应TheChart.Zoom.MouseButton;实现Zoom的鼠标键,TMouseButton=(mbLeft, mbRight,mbMiddle);Zoom.Zoom on Up Left Drag对应TheChart.Zoom.UpLeftZooms;默认的话,是向右下方(右上方也是)的拖放为Zoom,向左上方(左下方也是)的拖放为复位,如果选中了这个属性,则向左上方(左下方也是)也为Zoom.Scroll.Allow Scroll对应TheChart.AllowPanning;Scroll允许的方向,TPanningMode=(pmNone,pmHorizontal,pmVertical,pmBoth);//不允许,水平,垂直,水平和垂直. Scroll.Mouse Button对应TheChart.ScrollMouseButton;当按住这个MouseButton的时候,就实现Scroll. Cursor对应TheChart.Cursor.TeeChart经验总结11.Tools不记得是从7.0还是8.0,TeeChart提供了丰富的Tools.这是一个纯用TeeChart的Tools实现的简易游标Demo.本节后面会附上全部源码.Clip Series:当Series被拖动超出了Axis的范围,则超出的部分不显示.Cursor:十字,垂直,水平方向的游标,可以具体Snap任意Series的相应方向上的数据点.Drag Marks:可以任意拖动位置的Marks.Drag Point:可以任意移动绑定Series的数据点.Draw Line:在Chart上画线.Extra Legend:扩展Legend,可以在Chart再显示若干个Legend.fibonnaci:斐波那契数29Gantt Drag:可拖动的甘特图Image:图片Legend Palette:用Series的颜色显示Legend颜色Mark Tips:鼠标移动到Mark上,会显示出Hint提示.Nearest Point:移动鼠标,会找到离鼠标最近的Series上的一点.Pie Slices:移动鼠标到Pie Slices上,会高亮被鼠标移动到的slice.Region:填充Series和某个值之间的区域.Series Animation:显示动画,比如柱状图从0增加到设定值.Series Band:填充2个Series之间的区域.Statistics:统计资料,可以显示一个Series的一些统计资料.比如平均值,最大值,最小值,多少个值等等. Surface Nearest:找到表面最近的点,并且高亮.Axis Arrow:在Axis上添加2个方向的箭头,可以进行相应方向的Scroll操作.Axis Scroll:可以用鼠标直接拖动Axis进行数据范围的变更.Color Band:用彩色带填充Axis区域的背景颜色.Color Line:用彩色线(可以允许拖动)显示在相应Axis的区域.Grid Band:用2种颜色带交替填充相应Axis的区域.2D Lighting:有点类似探照灯一样的效果...3D Grid Transpose:交换3D Series的数据,行,列.Annotation:注释,可以在Chart里任意位置显示一段文字.Anti-Alias:平滑线的尖角.Banner:横幅,可以实现滚动字.Data Table:显示一个Series的数据表格.Fader:淡入/淡出一个Chart.Frame:显示一个包围Chart的框架(相框效果).Full Screen:将Chart全屏显示,然后用Alt+F4或者Esc返回.Legend Scrollbar:Legend的滚动条Link:在Chart里显示一个超级链接.Magnify:一个可以来回拖动的放大镜.Page Number:显示Chart的当前页/总页数(也可以提供切换页的按钮).Rectangle:一个可以拖动,可以改变大小的文字显示框.Rotate:可以360度任意角度旋转Chart.Selector:可以设置选择任何在Chart中的子组件,比如Title,Series等等.组合Hint,可以显示出选中的是什么组件.SubChart:在Chart里再内置子Chart.Text3D:显示3D的注释.Transpose Series:交换Series的行列.Video Creator:创建一段Chart图像的AVI.Video Player:在Chart里播放AVI.下面是之前提到的Demo.dfm文件:object Form1:TForm1Left=192Top=190Width=870Height=500Caption='Form1'30Color=clBtnFaceFont.Charset=DEFAULT_CHARSETFont.Color=clWindowTextFont.Height=-11='MS Sans Serif'Font.Style=[]OldCreateOrder=FalseOnCreate=FormCreatePixelsPerInch=96TextHeight=13object Button_FillData:TButtonLeft=744Top=48Width=75Height=25Caption='填充数据'TabOrder=0OnClick=Button_FillDataClickendobject CheckBox_Cursor:TCheckBoxLeft=752Top=88Width=57Height=17Caption='游标'TabOrder=1OnClick=CheckBox_CursorClickendobject CheckBox_LockY:TCheckBoxLeft=752Top=120Width=97Height=17Caption='Lock Cursor Y'TabOrder=2OnClick=CheckBox_LockYClickendobject Chart1:TChartLeft=24Top=32Width=681Height=409Title.Text.Strings=('TChart')TabOrder=3end31endpas文件:unit Unit1;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,TeEngine,Series,StdCtrls,ExtCtrls,TeeProcs,Chart,TeeTools;typeTForm1=class(TForm)Button_FillData:TButton;CheckBox_Cursor:TCheckBox;CheckBox_LockY:TCheckBox;Chart1:TChart;procedure Button_FillDataClick(Sender:TObject);procedure FormCreate(Sender:TObject);procedure CheckBox_CursorClick(Sender:TObject);private{Private declarations}FFLS1,FFLS2:TFastLineSeries;FCursorTool:TCursorTool;FAnnotationTool:TAnnotationTool;procedure CursorChange(Sender:TCursorTool;x,y:Integer;Const XValue,YValue:Double;Series:TChartSeries;ValueIndex:Integer);public{Public declarations}end;varForm1:TForm1;implementation{$R*.DFM}procedure TForm1.Button_FillDataClick(Sender:TObject);beginFFLS1.FillSampleValues(20);FFLS2.FillSampleValues(20);end;constLabelInv=10;32procedure TForm1.CursorChange(Sender:TCursorTool;x,y:Integer;const XValue,YValue:Double;Series:TChartSeries;ValueIndex:Integer);varStr:string;TmpX,TmpY:Integer;beginFAnnotationTool.Visible:=False;if not Assigned(Series)thenExit;if Series.XValues.Count<=0thenExit;Str:=Format('X Value=%.2f',[XValue])+#13#10+Format('%s YValue=%.2f',[FFLS1.Title,FFLS1.YValues[ValueIndex]])+#13#10+Format('%s YValue=%.2f',[FFLS2.Title,FFLS2.YValues[ValueIndex]]);FAnnotationTool.Text:=Str;TmpX:=x+LabelInv;if TmpX+FAnnotationTool.Width>Chart1.ChartRect.Right-LabelInv thenTmpX:=x-FAnnotationTool.Width-LabelInv;if CheckBox_LockY.Checked thenbeginTmpY:=Chart1.ChartRect.Top+LabelInv;if TmpY+FAnnotationTool.Height>Chart1.ChartRect.Bottom-LabelInv thenTmpY:=Chart1.ChartRect.Bottom-Height-LabelInv;endelsebeginTmpY:=Chart1.GetCursorPos.y+LabelInv;if TmpY+FAnnotationTool.Height>Chart1.ChartRect.Bottom-LabelInv thenTmpY:=Chart1.ChartRect.Bottom-FAnnotationTool.Height-LabelInv;end;if TmpY<Chart1.ChartRect.Top+LabelInv thenTmpY:=Chart1.ChartRect.Top+LabelInv;FAnnotationTool.Top:=TmpY;FAnnotationTool.Left:=TmpX;FAnnotationTool.Visible:=FCursorTool.Visible;end;procedure TForm1.FormCreate(Sender:TObject);begin//调整TeeChart属性Chart1.Legend.Visible:=True;Chart1.Legend.Alignment:=laTop;Chart1.View3D:=False;Chart1.Zoom.Allow:=False;Chart1.AllowPanning:=pmNone;33//创建Seriesif not Assigned(FFLS1)thenbeginFFLS1:=TFastLineSeries.Create(Self);FFLS1.ParentChart:=Chart1;FFLS1.Title:='Test Series1';end;if not Assigned(FFLS2)thenbeginFFLS2:=TFastLineSeries.Create(Self);FFLS2.ParentChart:=Chart1;FFLS2.Title:='Test Series2';end;//创建ToolsFCursorTool:=TCursorTool.Create(Chart1);FCursorTool.ParentChart:=Chart1;FCursorTool.Active:=False;FCursorTool.Pen.Color:=clRed;FCursorTool.Style:=cssVertical;FCursorTool.Series:=FFLS1;FCursorTool.Snap:=True;FCursorTool.OnChange:=CursorChange;FAnnotationTool:=TAnnotationTool.Create(Chart1);FAnnotationTool.ParentChart:=Chart1;FAnnotationTool.Active:=False;FAnnotationTool.PositionUnits:=muPixels;FAnnotationTool.Shape.CustomPosition:=True;FAnnotationTool.Shape.Gradient.Visible:=True;FAnnotationTool.Shape.Transparency:=30;end;procedure TForm1.CheckBox_CursorClick(Sender:TObject);beginFCursorTool.Visible:=CheckBox_Cursor.Checked;FAnnotationTool.Visible:=CheckBox_Cursor.Checked;end;end.34TeeChart经验总结12.Export之1.图像保存TeeChart提供比较丰富的图像保存(处理),和数据保存.先说图像保存.BMP:Flex:GIF:JPG:35MetaFile:PCX:PDF:36PostScript:SVG:SVG:37VML(HTM):XAML(WPF):38Binary://uses TeeExport;Procedure SaveTeeToFile(APanel:TCustomTeePanel;Const AName:String);Procedure SaveTeeToStream(APanel:TCustomTeePanel;AStream:TStream);//uses TeeStore;//TextFormat=False;Procedure SaveChartToFile(AChart:TCustomChart;Const AFileName:String;IncludeData:Boolean=True;TextFormat:Boolean=False);Procedure SaveChartToStream(AChart:TCustomChart;AStream:TStream;IncludeData:Boolean=True;TextFormat:Boolean=False);Text://uses TeeStore;//TextFormat=True;Procedure SaveChartToFile(AChart:TCustomChart;Const AFileName:String;IncludeData:Boolean=True;TextFormat:Boolean=False);Procedure SaveChartToStream(AChart:TCustomChart;AStream:TStream;IncludeData:Boolean=True;TextFormat:Boolean=False);XML://uses TeeStore;Procedure SaveChartToXMLFile(AChart:TCustomChart;Const AFileName:String;IncludeData:Boolean=True;XMLHeader:Boolean=True);Procedure SaveChartToXMLStream(AChart:TCustomChart;AStream:TStream;IncludeData:Boolean=True;XMLHeader:Boolean=True);39创建对象的时候,第二个参数为nil,则为全部的Series,否则为指定的Series对象.另外,除了XML以外,IncludeColors好像都没有用处.一般数据导出,我都用Cnpack的CnXlsWriter,和TeeChart的TSeriesDataXLS采用的都是直接写XLS 格式的方式,但是自由度大很多.Text://uses TeeExport;varaSeriesDataText:TSeriesDataText;beginaSeriesDataText:=TSeriesDataText.Create(Chart,nil);//nil=allaSeriesDataText.TextDePmiter:=';';//'',',',tab.....aSeriesDataText.TextQuotes:='''';//'"'.....aSeriesDataText.IncludeLabels:=True;aSeriesDataText.IncludeIndex:=True;aSeriesDataText.IncludeHeader:=True;aSeriesDataText.IncludeColors:=True;aSeriesDataText.SaveToFile('test.txt');aSeriesDataText.Free;end;XML://uses TeeExport;varaSeriesDataXML:TSeriesDataXML;beginaSeriesDataXML:=TSeriesDataXML.Create(Chart,nil);//nil=allaSeriesDataXML.IncludeLabels:=True;aSeriesDataXML.IncludeIndex:=True;aSeriesDataXML.IncludeHeader:=True;aSeriesDataXML.IncludeColors:=True;aSeriesDataXML.SaveToFile('test.xml');aSeriesDataXML.Free;end;HTML://uses TeeExport;varaSeriesDataHTML:TSeriesDataHTML;beginaSeriesDataHTML:=TSeriesDataHTML.Create(Chart,nil);//nil=allaSeriesDataHTML.IncludeLabels:=True;aSeriesDataHTML.IncludeIndex:=True;aSeriesDataHTML.IncludeHeader:=True;aSeriesDataHTML.IncludeColors:=True;aSeriesDataHTML.SaveToFile('test.html');40aSeriesDataHTML.Free;end;Excel(XLS)://uses TeeExport;varaSeriesDataXLS:TSeriesDataXLS;beginaSeriesDataXLS:=TSeriesDataXLS.Create(Chart,nil);//nil=allaSeriesDataXLS.IncludeLabels:=True;aSeriesDataXLS.IncludeIndex:=True;aSeriesDataXLS.IncludeHeader:=True;aSeriesDataXLS.IncludeColors:=True;aSeriesDataXLS.SaveToFile('test.xls');aSeriesDataXLS.Free;end;41。
“Reprint headers on new page”决定在多个页面打印时,是否在每个页面当打印输出标题栏。
“Side by side cell”:是否允许合并单元格“Join equal cells”选项,当数值相等时是否可以合并单元格。
使用对象查看器的属性设置也可以设置这些内容。
第八章FastReport允许用户插入chart制表组件到报表中,这样,在FastReport面板上的“TfrxCharObject”组件就必须应用上。
这个组件基于“TeeChart”动态库,在delphi 中需要将它包含在工程中。
我们通过以下示例先进行简单说明,连接DBDemos中的countory表,数据内容如下:在delphi环境中创建一个新的工程,添加“TTable”,“TfrxChartObject”,“TfrxDBData”,“TfrxReport”组件,并设置属性值:Table1:DatabaseName = 'DBDEMOS'TableName = ''frxDBDataSet1:DataSet = Table1UserName = 'Country'进入到报表设计器页面,并连结设置数据源。
在报表的设计页上放置一个“chart”组件,并调整其大小(18X8cm)。
双击组件,打开组件的编辑器窗口。
char编辑器区域说明:1:chart结构,一个chart包含有几个制表系统。
2:组件监视器,显示所选组件的属性。
3:连结chart的series的数据属性。
开始的界面显示如上,首先添加一个或几个series,在1区点击按钮,添加一个Pie。
有许多可用的不同的类型的series。
添加一个系列之后,3区被激活。
首先选择数据源,设置Label和pie字段。
点击确定按钮,关闭编辑器窗口,然后预览。
还如何改良以下报表呢?首先,将数据按升序方式进行排序。
再次进入编辑器,选择要设置的series,在3区设置选项。
“Reprint headers on new page〞决定在多个页面打印时,是否在每个页面当打印输出标题栏。
“Side by side cell〞:是否允许合并单元格“Join equal cells〞选项,当数值相等时是否可以合并单元格。
使用对象查看器的属性设置也可以设置这些容。
第八章FastReport允许用户插入chart制表组件到报表中,这样,在FastReport面板上的“TfrxCharObject〞组件就必须应用上。
这个组件基于“TeeChart〞动态库,在delphi中需要将它包含在工程中。
我们通过以下示例先进展简单说明,连接DBDemos中的countory表,数据容如下:在delphi环境中创建一个新的工程,添加“TTable〞,“TfrxChartObject〞,“TfrxDBData〞,“TfrxReport〞组件,并设置属性值:Table1:DatabaseName = 'DBDEMOS'TableName = 'country.db'frxDBDataSet1:DataSet = Table1UserName = 'Country'进入到报表设计器页面,并连结设置数据源。
在报表的设计页上放置一个“chart〞组件,并调整其大小〔18X8cm〕。
双击组件,打开组件的编辑器窗口。
char编辑器区域说明:1:chart结构,一个chart包含有几个制表系统。
2:组件监视器,显示所选组件的属性。
3:连结chart的series的数据属性。
开始的界面显示如上,首先添加一个或几个series,在1区点击按钮,添加一个Pie。
有许多可用的不同的类型的series。
添加一个系列之后,3区被激活。
首先选择数据源,设置Label和pie字段。
点击确定按钮,关闭编辑器窗口,然后预览。
还如何改良以下报表呢?首先,将数据按升序方式进展排序。
再次进入编辑器,选择要设置的series,在3区设置选项。
Delphi6.0 安装说明1.安装Delphi6.0主程序可以不安装Inerbase数据库和Java等组件2.安装Delphi6.0补丁程序1)安装Pack2补丁包(Delphi6\Pack2\D6_upd2_ent.exe)2)安装Rtl2补丁(delphi6\pack2\RTL ServicePack2)3)安装Rtl pack3补丁,根据安装说明文件README_D6_RTL_3.txt(Delphi6\pack2\RTL ServicePack1,2,3\d6_rtl3 \README_D6_RTL_3.txt),将d6_rtl3下的文件拷贝到相应的路径下3.安装Delphi6.0组件安装组件1)可执行文件(Exe)直接安装关闭所有Delphi程序后安装2)包文件(*.Dpk)安装打开Delphi主程序●选择[File]-[open],打开需安装的Dpk文件,在弹出窗口中点击”Install”●或者直接双击Dpk文件即可3)单元文件(*.Pas)安装打开Delphi主程序,选择[Componet]-[Install Componet],在Unit File Name选择所需的*.Pas文件,在弹出窗口中点击”Install”编译组件组件安装成功后,检查Delphi组件工具栏上是否有新增组件的页面,将页面中的控件拖到新建工程的Form中,按F9编译或运行,如果没有报错信息,则安装组件成功.如果报错。
需要添加单元文件所在路径添加方法:在Tools|Environment Options|Library ,点library path右边的按钮,弹出如下图所示的界面在Greyed items denote invalid path.输入报错package和unit 文件所在路径。
添加之后保存。
V2开发组件安装说明所有组件安装完成后进入到[Project]-[Options]-[Packages]-[Desigh packages]将所有包都选中,选中过程中会有提示信息,可不理会.组件删除选择[Project]-[options],packages页面,选中删除的组件,remove即可检查组建是否安装成功用Delphi打开delphi source\Main\VDRP.dpr检查是否有报错提示.4.Delphi6开发设置1)工程属性设置●版本号设置新建工程,[project]-[options],在Version Info页面必须设置版本号为2.0.0.0●编译环境设置[project]-[options],在Packages页面选中Build with runtime packages,添加以下包:vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;q rpt;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xml rtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;db express;dbxcds;indy;dclOffice2k;dxMasterViewD6;dxcomnd6;dxBarD6;dxBarDBNa vD6;dxBarExtItemsD6;dxBarExtDBItemsD6;dxsbD6;dxFlowChartD6;dxInsD6;dxDBEd D6;dxEdtrD6;dxLayoutControlD6;dxmdsd6;dxPSCoreD6;dxPsPrVwAdvD6;dxPSLnksD6 ;dxPSTeeChartD6;tee;dxPSDBTeeChartD6;teedb;dxPSdxInsLnkD6;dxPSdxMVLnkD6;d xPSdxFCLnkD6;EQTLD6;ECQDBCD6;EQDBTLD6;EQGridD6;dxGrEdD6;dxExELD6;dxELibD6 ;dxPageControlD6;Rz30Ctls60;Rz30DBCtls60;SUIPackD6;VCLZipD6;RxDB6;tmsd6 5.编译调试1)设置工程输出路径程序运行时将创建Dll到输出路径,如果不设置输出的Dll直接存放于工程的同级目录.设置方法如下图所示: [project]-[options],directories/condtionsnals页面2)设置运行主应用程序[Run]-[Run Parameters],Local:Host Application设置主应用程序.如下图所示3)设置调试Dll运行工程,登录V2主界面后,在菜单栏点击[调试Dll]选择(1)中设置路径下的Dll 4)设置断点调试。
Delphi历史版本详解-从Turbo Pascal 到Delphi XE 2delphi每每升级都在继续完善扩展面向对象的特性,这是升级新版本的最重要的原因。
大略说下语言层面上的变化。
d2005开始支持记录的运算符重载特性,运算符重载在需要大量数学运算编码时尤为方便。
等等。
d2007加入了对触屏的支持,vcl内不少数据组件进行了更新。
等等。
d2009开始全面支持unicode,并开始加入泛型,新增了一些泛型容器。
有了泛型delphi终于才能说是个完整的面向对象语言。
再一个开始对vista\win7的新winapi的支持。
等等。
d2010开始继续完善上个版本中的泛型特性,并扩充和再次新增了一些泛型类。
xe变化不大,只是继续对vcl修修补补,记得新增了delphi 的原生的正则支持,加入的那个正则类叫啥名字也记不清了,反正不需要再用第三方的正则库了。
等等。
x2变动挺大,把winapi进行了重新封装。
加入了firemonkey框架、支持win64位编译,号称跨平台。
在gdi+出现的10年后终于gdi+封装进了vcl,可直接使用gdi+这个快淘汰的东东了。
等等。
xe3 继续号称跨平台,win64位编译。
继续修修补补。
等等LX补充。
个人推荐D2009和xe。
另外高版本中强化的调试功能和单元测试等等这些是d7没法比拟的,这也是升级高版本的重要原因。
我是同时装有d7、d2009和xe。
写些只需三两千或几百行的玩具应用用d7就好,编译的exe也精悍。
干活时都是d2009或xe,xe用得较多。
-------------------------------------------------------------------------------------------------------------------------------------------Delphi历史版本详解-从Turbo Pascal 到Delphi XE 2 日期:2011年9月9日在delphi XE2发布之际,满足各位D迷得要求,跟大家分享一下从Turbo Pascal 到Delphi XE 2 各个版本历史。
水文P-III频率曲线计算软件开发研究作者:靳晟雷晓云李慧来源:《南水北调与水利科技》2009年第05期摘要:我国水文频率计算一般采用P-Ⅲ型频率曲线,它是推求工程水文设计值最为基础的重要依据。
为了解决传统水文频率计算目估适线法计算工作量大和一些水文频率计算软件计算准确性低的问题,现主要研究了如何利用软件开发工具DELPHI7.0、SQL SERVER 2005、EXCLE 来实现自动绘制海森机率格纸、经验点据、水文P-III频率曲线及推求指定频率水文变量设计值的方法,可为同类软件开发提供较好参考。
关键词:P-III频率曲线;海森机率格纸;DELPHI7.0;SQL SERVER 2005;EXCEL中图分类号:P333文献标识码:A 文章编号:1672-1683(2009)05-0070-03Hydrological P-III Frequency Curve Calculation Software Development ResearchJIN Sheng, LEI Xiao-yun, LI Hui(College of Water Conservancy and Civil Engineering,Xinjiang AgriculturalUniversity,Urumqi830052,China)Abstract: Generally the hydrological frequency analysis has adopted P-Ⅲ frequency curve in China, which is an important foundation to solve the engineering hydrological design data. Considering application of the traditional hydrological frequency calculation visual adaptability line method on solving the design data needs to do much calculation works, and some calculation software has poor accuracy, this paper mainly has researched the technical method to develop the hydrological P-Ⅲ frequency curve calculation software based on the software DELPHI7.0, SQL SERVER 2005 and EXCEL. The hydrological P-Ⅲ frequency curve calculation software can automatically draw the Haisen probability checked paper and empirical data and hydrological P-Ⅲ frequency curve, which is easily applied to solve the hydrological design methods.Key words: P-III frequency curve; Haisen probability checked paper; DELPHI7.0; SQL SERVER 2005; EXCEL根据SL44-93《水利水电工程设计洪水计算规范》,我国水文频率计算一般采用P-Ⅲ型频率曲线。
在Delphi 中,CheckBox 是一种常见的用户界面控件,用于在应用程序中表示一个可选的或可切换的选项。
下面是一些使用CheckBox 控件的基本用法:1. 创建一个CheckBox 控件:在Delphi 的Form 设计器中,从工具箱(Toolbox)中选择CheckBox 控件,并将其拖放到Form 上。
2. 更改CheckBox 的属性:选中CheckBox 控件,然后在Object Inspector 中更改其属性。
例如,你可以设置Caption 属性来显示文本标签,设置Checked 属性来控制初始状态是否被选中。
3. 响应CheckBox 的事件:CheckBox 控件具有一些事件,例如OnClick 和OnChange。
你可以在这些事件处理程序中编写代码来响应用户与CheckBox 的交互。
例如,你可以在OnClick 事件中编写代码来切换CheckBox 的状态。
以下是一个简单的示例,演示如何在Delphi 中使用CheckBox 控件:```delphiprocedure TForm1.CheckBox1Click(Sender: TObject);beginif CheckBox1.Checked thenShowMessage('Checkbox is checked')elseShowMessage('Checkbox is unchecked');end;```在上面的示例中,当用户单击CheckBox 时,会触发CheckBox1Click 事件,并根据CheckBox 的状态显示相应的消息框。
除了上述基本用法外,你还可以使用CheckBox 控件的其他属性和事件来实现更复杂的交互功能。
例如,你可以使用CheckBox 的OnChange 事件来跟踪其状态的变化,并根据需要进行处理。
从使用ADO德尔菲基本的数据库开发(与德尔福)许多德尔福初学者开始项目如“我的记事本”什么时候开始编程与德尔福,其他开发者花在写各种各样的日与夜多媒体技术和图形应用程序,但是所有的人迟早会意识到这一切现在90%的软件与一些数据存储在某些方式。
那是毫无疑问的,德尔福已功能强大、可靠的数据管理能力。
应用程序开发建设新一代的商业软件被吸引到德尔福原因有几个。
我们能创造软件用希腊古都几乎所有类型的运作与桌面的数据库像悖论,dBase或女士访问。
我们也可以利用德尔菲法建立客户端-服务器开发解决方案。
用Delphi数据访问…只是几句话德尔福船只与超过40家的预制组件和提供了一种直观的数据库编程环境,包括一个完整的代码编辑器、数据库形式,加快法师步骤来创建一个浏览数据表和数据模块设计工具,可以用来共享数据访问在多种形式。
其他几个数据库特殊工具也具备了德尔菲法来帮助我们代码生成更快、更容易。
的数据访问页的组件提供部件的使用调色板连接到一个数据源。
页面数据控制、数据清楚部件那些(后连接到一个数据库Delphi)可以被用来retreive传送数据从一个数据库。
这个组分对使用ADO数据对象页面ActiveX控件(ADO)进入信息通过OLEDB数据库。
这个组分对网页访问数据库包括包括直接。
不要逃跑数据库编程,当然不是微不足道。
在这个课程中,我们将尽量拉近的一些技巧,问题、解决数据库编程用Delphi随着所有秘密它藏起离我们也有多远。
在我们继续使用各项数据部件/工具在Delphi我们应该首先看到的一些概念数据库设计,试图营造出一个简单的数据库。
在我们开始前互动数据库应用德尔菲法则,它是一个好主意,感受到现代数据库是什么。
当你想一个单词数据库你应该这样做通常认为任何类型的数据存储在一个电脑,甚至是SomeFile.pas文件(代码来一些Delphi单位)是一种数据库。
另一种类型的数据库一个词或一个简单的文件。
ini文件。
存取。
TeeChartPro图表控件在VC++ 6.0 平台上的运用(一)看了一些网上TeeChart的例子,觉得不是很简捷,这里给一个我自己编的VC++6.0下的小例程。
TeeChart图表控件的介绍网上搜一下就能了解个大概,推荐大家看软件安装完毕后的产品说明文档(有点英文基础就能看懂)。
国内出了一本介绍它的书,编程环境是Delphi,我习惯用VC++,所以就花了点时间把大致过程描述一下,以节省感兴趣的朋友看产品说明文档的时间。
第一步,启动VC++建立一个基于对话框程序的工程,下面是几个步骤的截图,相信用过VC++的朋友都很熟悉。
这样可以获得一个对话框资源,如下图:第二步,插入TeeChartPro的ActiveX控件(此控件在TeeChartPro安装后就注册好了),过程如下图:这时控件组工具栏的尾部会出现一个新的控件:将这个TeeChartPro控件拖放到对话框里,调整大小到合适为止。
TeeChartPro图表控件在VC++ 6.0 平台上的运用(二)第三步,设置TeeChart控件的属性,本例程目的是画一个随机曲线。
上一步已经在对话框上放置了TeeChart图表控件,如下图:选定TeeChart控件,右键选择Properties:点击Edit Chart...按钮,设置控件属性:选择Series表单,点击Add...按钮,加入一条Fast Line曲线:选择Legend表单,去掉Visible单选框里面的勾:选择3D表单,去掉3 Dimensions单选框里面的勾:TeeChartPro图表控件在VC++ 6.0 平台上的运用(三)接上篇选择Tools表单,添加TeeChart工具,并作相关设置:设置完毕后,对话框变为:第四步,加入程序代码。
在CMyTeeChartDlg类的OnInitDialog()函数里添加下面的代码: // TODO: Add extra initialization herem_ctrlChart.Series(0).Clear();m_ctrlChart.GetPage().SetMaxPointsPerPage(60);srand((int)time(0));char strTime[25];for(int i=0; i<60; i++){itoa(i,strTime,10);int dTemper = rand()%100;m_ctrlChart.Series(0).AddXY(i,dTemper,strTime,RGB(255,0,0));}m_ctrlChart.GetAxis().GetLeft().SetMinMax(0, 100);这段代码生成60个0~100之间的随机数,作为曲线显示数据。
Delphi6.0 安装说明1.安装Delphi6.0主程序可以不安装Inerbase数据库和Java等组件2.安装Delphi6.0补丁程序1)安装Pack2补丁包(Delphi6\Pack2\D6_upd2_ent.exe)2)安装Rtl2补丁(delphi6\pack2\RTL ServicePack2)3)安装Rtl pack3补丁,根据安装说明文件README_D6_RTL_3.txt(Delphi6\pack2\RTL ServicePack1,2,3\d6_rtl3 \README_D6_RTL_3.txt),将d6_rtl3下的文件拷贝到相应的路径下3.安装Delphi6.0组件安装组件1)可执行文件(Exe)直接安装关闭所有Delphi程序后安装2)包文件(*.Dpk)安装打开Delphi主程序●选择[File]-[open],打开需安装的Dpk文件,在弹出窗口中点击”Install”●或者直接双击Dpk文件即可3)单元文件(*.Pas)安装打开Delphi主程序,选择[Componet]-[Install Componet],在Unit File Name选择所需的*.Pas文件,在弹出窗口中点击”Install”编译组件组件安装成功后,检查Delphi组件工具栏上是否有新增组件的页面,将页面中的控件拖到新建工程的Form中,按F9编译或运行,如果没有报错信息,则安装组件成功.如果报错。
需要添加单元文件所在路径添加方法:在Tools|Environment Options|Library ,点library path右边的按钮,弹出如下图所示的界面在Greyed items denote invalid path.输入报错package和unit 文件所在路径。
添加之后保存。
V2开发组件安装说明所有组件安装完成后进入到[Project]-[Options]-[Packages]-[Desigh packages]将所有包都选中,选中过程中会有提示信息,可不理会.组件删除选择[Project]-[options],packages页面,选中删除的组件,remove即可检查组建是否安装成功用Delphi打开delphi source\Main\VDRP.dpr检查是否有报错提示.4.Delphi6开发设置1)工程属性设置●版本号设置新建工程,[project]-[options],在Version Info页面必须设置版本号为2.0.0.0●编译环境设置[project]-[options],在Packages页面选中Build with runtime packages,添加以下包:vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;q rpt;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xml rtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;soaprtl;db express;dbxcds;indy;dclOffice2k;dxMasterViewD6;dxcomnd6;dxBarD6;dxBarDBNa vD6;dxBarExtItemsD6;dxBarExtDBItemsD6;dxsbD6;dxFlowChartD6;dxInsD6;dxDBEd D6;dxEdtrD6;dxLayoutControlD6;dxmdsd6;dxPSCoreD6;dxPsPrVwAdvD6;dxPSLnksD6 ;dxPSTeeChartD6;tee;dxPSDBTeeChartD6;teedb;dxPSdxInsLnkD6;dxPSdxMVLnkD6;d xPSdxFCLnkD6;EQTLD6;ECQDBCD6;EQDBTLD6;EQGridD6;dxGrEdD6;dxExELD6;dxELibD6 ;dxPageControlD6;Rz30Ctls60;Rz30DBCtls60;SUIPackD6;VCLZipD6;RxDB6;tmsd6 5.编译调试1)设置工程输出路径程序运行时将创建Dll到输出路径,如果不设置输出的Dll直接存放于工程的同级目录.设置方法如下图所示: [project]-[options],directories/condtionsnals页面2)设置运行主应用程序[Run]-[Run Parameters],Local:Host Application设置主应用程序.如下图所示3)设置调试Dll运行工程,登录V2主界面后,在菜单栏点击[调试Dll]选择(1)中设置路径下的Dll 设置断点调试教你如何用WORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:WORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。
一、TeeChart使用指南1.添加引用一下两个DLL文件到项目中。
工具箱中右键打开选择项,如上图所示在筛选器中打开浏览找到项目中的TeeChart.dll文件点击打开,完成后工具栏中将会出现teechart控件的图表2.创建一个webchart控件到页面中3.编辑属性4.在上图中添加series ,设置teeChart Gallery属性5.设置数据库连接6.必要参数设置如何在项目中使用破解版本的TeeChart?1、建一个aspx文件Default.aspx;2、在设计视图中拖进去一个控件;3、在属性窗口的杂项中,将GetChartFile设置成GetChart.aspx(默认)将TempChart属性设置成Session新建aspx文件GetChart.aspx,在GetChart.aspx.cs中写入以下代码: using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;///<summary>///为了覆盖session变量中的图表, 新建一个页面,命名为GetChart.aspx///</summary>public partial class GetChart : System.Web.UI.Page{///<summary>///将图片存储在session变量中///</summary>///<param name="sender"></param>///<param name="e"></param>protected void Page_Load(object sender, EventArgs e){string chartName = Request.QueryString["Chart"];if (Session[chartName] != null){System.IO.MemoryStream chartStream = newSystem.IO.MemoryStream();chartStream =((System.IO.MemoryStream)Session[chartName]);Response.OutputStream.Write(chartStream.ToArray(), 0, (int)chartStream.Length);chartStream.Close();Session.Remove(chartName);}}}如何将GetChart.aspx拷贝到当前的工程目录下。
MFC画图的强⼤⼯具MSChart的使⽤MFC画图的强⼤⼯具MSChart的使⽤图表由于其直观明了的特性,在实际应⽤中⼗分很⼴泛。
我们常常希望数据能通过图表来显⽰其特性。
例如在Delphi和C++Builder编程中,我们可以很⽅便地实现数据图表。
MsChart(6.0或5.0版)是Windows 系统中Visual studio⾃带的⼀个ACTIVEX控件,它功能强⼤,应⽤⼴泛,具有以下特点:·⽀持随机数据和随机数组,动态显⽰。
·⽀持所有主要的图表类型。
·⽀持三维显⽰。
下⾯是⼀个实例:程序运⾏效果图⼀、在⼯程中加⼊mschart菜单->Project->Add To Project->Components and Controls->Registered ActiveX Controls->Microsoft Chart Control, version 6.0 (OLEDB)⼆、在CDemoView中加⼊:CMSChart m_Chart三、创建及设置m_Chart3.1 在CDemoView::OnCreate 中创建CMSChart1.// CDemoView::OnCreate()2.CRect rc;3.GetClientRect(&rc);4.if(!m_Chart.Create("mschart", WS_CHILD| WS_VISIBLE, rc, this, 10))5.return-1;3.2 在CDemoView::OnSize 中调整m_Chart 的⼤⼩,使之能随窗⼝⼤⼩变化⽽变化1.// CDemoView::OnSize2.if( m_Chart.GetSafeHwnd() )3.m_Chart.MoveWindow( 0, 0, cx, cy );3.3 设置m_Chart01.void CDemoView::InitChart()02.{03.// 设置标题04.m_Chart.SetTitleText("mschart ⽰例 by thinkry@/doc/4ce3eb7bbcd126fff7050bc0.html ");05.// 下⾯两句改变背景⾊06.m_Chart.GetBackdrop().GetFill().SetStyle(1);07.m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);08.// 显⽰图例09.m_Chart.SetShowLegend(TRUE);10.m_Chart.SetColumn(1);11.m_Chart.SetColumnLabel((LPCTSTR)"1号机");12.m_Chart.SetColumn(2);13.m_Chart.SetColumnLabel((LPCTSTR)"2号机");14.m_Chart.SetColumn(3);15.m_Chart.SetColumnLabel((LPCTSTR)"3号机");16.// 栈模式17.// m_Chart.SetStacking(TRUE);18.// Y轴设置19.VARIANT var;20.m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetAuto(FALSE); / / 不⾃动标注Y轴刻度21.m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMaximum(100); // Y轴最⼤刻度22.m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinimum(0); // Y轴最⼩刻度23.m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMajorDivision( 5); // Y轴刻度5等分24.m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinorDivision( 1); // 每刻度⼀个刻度线25.m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText("⼩时"); // Y轴名称26.// 3条曲线27.m_Chart.SetColumnCount(3);28.// 线⾊29.m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().GetVtC olor().Set(0, 0, 255);30.m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().GetVtC olor().Set(255, 0, 0);31.m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().GetVtC olor().Set(0, 255, 0);32.// 线宽(对点线图有效)33.m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWid th(50);34.m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWid th(100);35.m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().SetWid th(2);36.// 数据点类型显⽰数据值的模式(对柱柱状图和点线图有效)37.// 0: 不显⽰ 1: 显⽰在柱状图外38.// 2: 显⽰在柱状图内上⽅ 3: 显⽰在柱状图内中间 4: 显⽰在柱状图内下⽅39.m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints() .GetItem(-1).GetDataPointLabel().SetLocationType(1);40.m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints() .GetItem(-1).GetDataPointLabel().SetLocationType(1);41.m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints() .GetItem(-1).GetDataPointLabel().SetLocationType(1);42.}3.4 设置数据01.void CDemoView::DrawChart()02.{03.int nRowCount = 6;04.m_Chart.SetRowCount(nRowCount);05.VARIANT var;06.07.// 不⾃动标注X轴刻度08.m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetAuto(FALSE) ;09.10.// 每刻度⼀个标注11.m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPe rLabel(1);12.13.// 每刻度⼀个刻度线14.m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPe rTick(1);15.16.// X轴名称17.m_Chart.GetPlot().GetAxis(0,var).GetAxisTitle().SetText("⽇期");18.char buf[32];19.srand( (unsigned)time( NULL ) );20.for(int row = 1; row <= nRowCount; ++row)21.{22.m_Chart.SetRow(row);23.sprintf(buf, "%d号", row);24.m_Chart.SetRowLabel((LPCTSTR)buf);25.m_Chart.GetDataGrid().SetData(row, 1, rand() * 100 / RAND_MAX, 0);26.m_Chart.GetDataGrid().SetData(row, 2, rand() * 100 / RAND_MAX, 0);27.m_Chart.GetDataGrid().SetData(row, 3, rand() * 100 / RAND_MAX, 0);28.}29.m_Chart.Refresh();30.}3.5 改变显⽰类型view sourceprint?01.// 折线图02.void CDemoView::OnChartLine()03.{04.m_Chart.SetChartType(3);05.DrawChart();06.}07.08.// 柱状图09.void CDemoView::OnChartCombi()10.{11.m_Chart.SetChartType(1);12.DrawChart();13.}14.// 饼状图15.void CDemoView::OnChartPie()16.{17.m_Chart.SetChartType(14);18.DrawChart();19.}。
本文主要讲解Delphi中Chart,TeeChart的属性,方法及用法.Tchart分析报告,TeeChart使用指南,TeeChart控件介绍1.AllowZoom : Boolean是否允许鼠标拖动来缩放图表2.AnimatedZoom : Boolean拖动是否显示缩放过程3.AxisVisible : Boolean显示和隐藏4个子图表4.BufferedDisplay :BooleanTrue时图表首先画在内部画布上,可以防止图表闪烁,但耗费内存资源.5.ChartHeight : LongInt以像素为单位,运行为只读,显示图表顶轴与底轴的高度,不包含页边距,Height包含页边距,(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)6.DepthAxis,LeftAxis,RightAxis,TopAxis,BottomAxisTchart共分为五个子图表,LeftAxis,RightAxis,TopAxis,BottomAxis和DepthAxis默认情况下只显示LeftAxis和BottomAxis子图表可以通过Series属性的子属性HorizAxis与VertAxis进行设置如:chart1.Series[0].HorizAxis := aBothHorizAxis;chart1.Series[0].VertAxis := aBothVertAxis;chart1.BottomAxis.Title.Caption := 'nsgtao';chart1.BottomAxis.Title.Font.Color := clRed;7.Foot : TChartTitle在图表底部定义的文本和格式,在图表底部显示一些说明文字Chart1.Foot.Text.Add('Nsgtao Foot');(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)8.Gradient : TChartGradient用于设置图表背景颜色:是否显示背景色,背景色渐变的起始颜色和终止颜色,渐变方向等以下是南山古桃(nsgtao) 引用网上资源引用1.关键词:Tchart分析报告引用2.关键词: TeeChart使用指南,TeeChart控件介绍*************************************************************** *************************************************************** *********************下面是南山古桃引用并整理的文章*************************************************************** *************************************************************** *****1 Tchart分析报告(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)1.1 [概述]TChart是delphi里面一个标准的图形显示控件。
它可以静态设计(at design time)也可以动态生成。
1.2 [继承关系]TObjectTPersistentTComponentTControlTCustomControlTWedgetControlTChartTCustomPanel1.3 [tips]1.3.1 Pro Version支持Bezier , Contour , Radar 和 point3D 曲线1.3.2 支持jpeg文件的导出1.3.3 Chart中的Series 可以连接到Table , Query , RemoteDataset(其他数据集)1.3.4 TChart里的series的active属性可以实现对已绘制图形的显示或者隐藏1.3.5 在TChart中, tchartSeries是所有具体series的父类,没有画出什么来的,用一个具体的series类来创建就可以了,比如用TLineSeries、 TPieSeries、 TPointSeries、 TPointSeries等等都行1.3.6 TTeeFunction Component可以实现在同一个TChart里面,一个Serries 对另一个Serries的统计1.4 [问题极其使用技巧]1.4.1 TChart中如何实现只有Y轴的放大与缩小功能?设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性1.4.2 如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化?//设置底座标with myChart.BottomAxis dobeginAutomatic:=false;Minimum:=0;LabelStyle := talText;end;//设置左坐标with myChart.LeftAxis dobeginAutomatic:=false;Minimum:=0;Title.Angle:=270;Title.Font:=Self.Font;Title.Font.Charset:=ANSI_CHARSET;:='@宋体';Grid.Visible := False;end;//设置右坐标with myChart.RightAxis dobeginAutomatic:=false;Title.Font:=Self.Font;Title.Font.Charset:=ANSI_CHARSET;:='@宋体';Title.Caption:='累计百分比(%)';Maximum:=100;Minimum:=0;end;1.4.3 如何删除一个图形中的一个点?使用Series的delete 方法1.4.4 如何修改一个点的X或者Y 值?LineSeries1.YValue[3] := 27.1 ;{In Bubble Series}BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ;{In Pie Series}PieSeries1.PieValues.Value[ 3 ] := 111 ;1.4.5 如果横坐标是时间(日期),如何进行设置?{First, you need to set the DateTime property to True in the desired X and/or Y values list.}LineSeries1.XValues.DateTime := True ;{Second, use the same above described methods, but give the values as Date, T ime or DateTime values}LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );1.4.6 如何在chart中画出的曲线某个点上标记出该点的值?Series.Marks.Visible:=true;Series.Marks.Style:=smsValue;1.4.7 如何设置横轴或者纵轴的增长率?Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;Chart.RightAxis.Increment := 1000;1.4.8 如何对图象进行缩放?TChart的ZoomRect或者ZoomPercent方法(Pie图可能不支持缩放)(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)1.5 [TChart可以绘制的图形]1.5.1 Line ( TLineSeries)1.5.2 FastLine (TFastLineSeries) 相对Line来说,它损耗了某些属性从而来实现快速绘制1.5.3 Bar (TBarSeries)1.5.4 Horizontal bar (THorizBarSeries)1.5.5 Area (TAreaSeries)1.5.6 Point (TPointSeries)1.5.7 Pie (TPieSeries)1.5.8 Arrow (TArrowSeries)1.5.9 Bubble (TBubbleSeries)1.5.10 Gantt (TGanttSeries)1.5.11 Sharp (TChartShape)1.6 [TChart的实时绘制]实时绘制对机器性能要求比较高,因此我们在编程的时候要注意下面几个方面:ü使用2D图形ü是Chart尽可能包含少的点ü如果需要,可以移除(remove)chart的legend(?????)和Titleü使用默认的字体和字体大小ü使用FastLineSeriesü使用实体(solid)画笔和画刷格式ü尽量避免使用圆形和环行bar样式ü不要使用背景图片和渐变效果样式ü把Chart的BevelInner和BevelOUter属性设置为bcNoneü如果需要,把TChart的AxisVisible属性设置为Falseü把BufferedDisplay设置为false可以加速chart的重绘1.7 [Scrolling]TChart有4中scroll选择(AllowPanning属性),分别是不允许Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical) ; 水平和垂直Scroll (pmBoth)Procedure Scroll(Const Offset:Double; CheckLimits:Boolean);例子如下:Chart1.BottomAxis.Scroll( 1000, True );这段代码也等同于With Chart1.BottomAxis doBeginAutomatic:=false;SetMinMax( Minimum+1000, Maximum+1000 );End;(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)1.8 [TChart中的全局变量]ü TeeScrollMouseButton := mbRight;设置鼠标右键为TChart滚动键(默认)ü TeeScrollKeyShift := [ ssCtrl ]; 要按住Control键才可以使Scroll滚动1.9 [TChartSerries使用技巧]1.9.1 运行时候创建一个Serries, 三种方法:1.Var MySeries : TBarSeries ;MySeries := TBarSeries.Create( Self );MySeries.ParentChart := Chart1 ;2.Chart1.AddSeries( TBarSeries.Create( Self ) );3.Var MyClass : TChartSeriesClass;MyClass := TBarSeries ;Chart1.AddSeries( MyClass.Create( Self ) );1.9.2 获得TChart中的Serries数组,也有三种方法1.MySeries := Chart1.SeriesList [ 0 ]2.MySeries := Chart1.Series [ 0 ]3.MySeries := Chart1 [ 0 ]1.9.3 SerriesCount属性获得SeriesList中Series的个数1.9.4 隐藏TChart中的Series有三种方法,但是效果不等价1. Series1.Active:=False; 仅仅隐藏,当设置为true的时候还可以显示出来2. Series1.ParentChart:=nil ;隐藏,重新设置ParentChart为TChart时候可以显示3. Series1.Free; 删除了Series. 不可以恢复1.9.5 TChart中的数据排序With Series1 dobeginYValues.Order:=loAscending;YValues.Sort;Repaint;end;Ø 定位一个点(Loacate a point)Series1.XValues.Locate(123);Ø XValue和YValue都拥有的属性Total , TotalABS , MaxValue , MinValue*************************************************************** *************************************************************** *********************下面是南山古桃引用百度网友zwl232 的文章*************************************************************** *************************************************************** *****(**** 转载敬请注明-本文出处:南山古桃(nsgtao)的百度空间:/nsgtao/ ****)TeeChart使用指南TeeChart控件介绍TeeChart Pro ActiveX是西班牙Steema SL公司开发的图表类控件,主要用来生成各种复杂的图表。