07 2011 档案
TeeChart经验总结 14.Export之3.数据导出
摘要:这节也很简单,需要介绍4个类.创建对象的时候,第二个参数为nil,则为全部的Series,否则为指定的Series对象.另外,除了XML以外,IncludeColors好像都没有用处.一般数据导出,我都用Cnpack的CnXlsWriter,和TeeChart的TSeriesDataXLS采用的都是直接写XLS格式的方式,但是自由度大很多.Text: 1 //uses TeeExport; 2 var 3 aSeriesDataText: TSeriesDataText; 4 begin 5 aSeriesDataText := TSeriesDataText.Create(Chart, ni
阅读全文
TeeChart经验总结 13.Export之2.对象保存
摘要:这一小节很简单,就几个函数.Binary: 1 //uses TeeExport; 2 Procedure SaveTeeToFile(APanel:TCustomTeePanel; Const AName:String); 3 Procedure SaveTeeToStream(APanel:TCustomTeePanel; AStream:TStream); 4 //uses TeeStore; 5 //TextFormat = False; 6 Procedure SaveChartToFile(AChart:TCustomChart; Const AFileName:String; 7
阅读全文
TeeChart经验总结 12.Export之1.图像保存
摘要:TeeChart提供比较丰富的图像保存(处理),和数据保存.先说图像保存.BMP: 1 //1 2 Chart.SaveToBitmapFile(Const FileName:String); 3 //2 4 Chart.SaveToBitmapFile(Const FileName:String; Const R:TRect); 5 //3 6 //Uses TeeBmpOptions; 7 Procedure TeeSaveToBitmap( APanel:TCustomTeePanel; 8 Const FileName: WideString; 9 Const R:TRect); 10
阅读全文
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:斐波
阅读全文
TeeChart经验总结 10.Zoom&Scroll
摘要:Zoom.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对应 Th
阅读全文
TeeChart经验总结 9.Series之4:Pie&Others
摘要:TeeChart自带的PieDemo就很能说明问题.Explode biggest对应 Pie.ExplodeBiggest; 将最大的一块slice推出.Total Angle对应 Pie.AngleSize; 所有slice的总角度.Dark Border对应 Pie.DarkPen;每一块slice的边界线.Dark 3D对应 Pie.Dark3D;slice侧边的阴影.Patterns对应 Pie.UsePatterns;是否给slice使用图案.Multiple Pies对应 Pie.MultiPie: TMultiPie=(mpAutomatic, mpDisabled); 如果C
阅读全文
TeeChart经验总结 8.Series之3:Horizontal Bar&Area
摘要:Horizontal 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.Tra
阅读全文
TeeChart经验总结 7.Series之2:Bar
摘要:以后不贴TeeChart Editor的图了.尽量文字说明,也方便查找属性.BarSeries.BarStyle Bar的显示类型1 //矩形,椎体,倒椎体2 //圆筒,椭圆,箭头,渐变矩形,圆锥体,斜面3 //斜立方体,钻石型,反箭头,倒圆锥体4 TBarStyle=( bsRectangle, bsPyramid, bsInvPyramid,5 bsCilinder, bsEllipse, bsArrow, bsRectGradient, bsCone, bsBevel,6 bsSlantCube, bsDiamond, bsInvArrow, bsInvCone);BarSeries.C
阅读全文
TeeChart经验总结 6.Series之1:Line
摘要:TeeChart提供了很多类型不同的Series,下面是比较常用的.创建Series可以通过TeeChart Editor,如下View下面,可以选择显示或者使用代码创建,如下Series Name(选中就可以修改Name,不选中可以修改Title),Series Group;可以创建Series Group进行管理.Clone可以复制一个新的Series,Change可以修改已经创建好的Series的类型. 1 Series := TFastLineSeries.Create(aChart); 2 //线所在Chart 3 Series.ParentChart := aChart; 4 //
阅读全文
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
阅读全文
TeeChart经验总结 4.Titles和Legend
摘要:Titles分为四个:Title,SubTitle,SubFoot,Foot.这4个的区别其实就是默认的位置.从名字也可以猜出.Visible:可见.Adjust Frame:适应框架.应该是根据Text内容调整以适应大小.Alignment:排列位置,在Positon如果使用Custom,则这个属性失效.Text:该Title显示的文字内容.Edit:编辑Text.Custom:前面提过了,可以自定义Title的显示位置.Vert.Margin:垂直空白,是指和Wall之间的距离.当Custom选择时,则无效.Color:背影颜色.Pattern:图案Transparent:透明,和Pane
阅读全文
TeeChart经验总结 3.Panel和Walls
摘要:Panel是画图的基础,所以优先从这里讲起.Walls为Series表现的区域,有Left,Right,Bottom,Back之分,其中Left,Right,Bottom都为3D显示时候用的,Back就是Series绘图区域.先说Panel,看图:Color是用来修改Panel显示的颜色,如果Walls的Transparent属性为True,那么都会显示这个颜色,如果为False,就可以自行定义颜色显示.Bak Image Inside,顾名思义,就是让背景图片是否显示在Back Wall里.Borders:用来设计Panel的边缘,都很简单.Separation:是和Walls的间隔.Mar
阅读全文
TeeChart经验总结 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 E
阅读全文
TStream与内存段相互转换
摘要:刚才有人问起..顺手写的.他是用于DLL,所以我多写了2个函数.在DLL里提供内存指针输出,一定要记得提供相应的内存释放函数.有借有还,再借不难...老规矩..下面是demo 1 var 2 MS: TMemoryStream; 3 bytes: PByte; 4 size: Integer; 5 begin 6 MS := TMemoryStream.Create; 7 MS.LoadFromFile('d:\1.rar'); 8 size := StreamToBytes(MS, bytes); 9 10 MS.Clear;11 12 BytesToStream(bytes
阅读全文
VB下的TIniFile类(模拟Delphi)
摘要:因为一个需求,写了这样一个类..写的我很胸闷.好多东西都没有现成的...记得一定要SetFileName,不然没法用..而且可能报异常,实在不想写异常处理了..我实在没找到构造函数在哪里....我只尝试了WriteString,ReadString,ReadSections这几个函数,其他的都没测试.调用代码如下:1 Dim sectionlist() As String2 IniFile.SetFileName (".\Test.ini")3 IniFile.ReadSections sectionlist4 Dim i As Long5 Combo1.Clear6 Fo
阅读全文
TeeChart经验总结 1.安装
摘要:一点说明,本人还在极其落后的使用Delphi5,所以所有的测试,代码均为D5版本,看的时候要有一颗兼容的心.//------------------------------------------分割线---------------------------------------------------------------第三方组件,尽量使用有源码的版本,方便修改问题,也方便看懂功能,不然改都没法改.安装TeeChart的话,推荐TeeChart Pro v8.01 with Full Source,目录中有一个exe名为:TeeRecompile.exe.运行它.点击:BEGIN.编译完
阅读全文
打开资源管理器,并将焦点指向某文件
摘要:uses ShellAPI;var FileName: string;begin FileName := 'D:\tools\cpu-z\cpuz.exe'; ShellExecute(0, 'Open' ,'explorer.exe', PChar('/e,/select,' + FileName), nil, SW_NORMAL);end;-------------------------------------------------------无敌分割线-----------------------------------
阅读全文
得到鼠标和键盘的空闲时间
摘要:var t: TLastInputInfo;begin t.cbSize := SizeOf(t); GetLastInputInfo(t); Label1.Caption := IntToStr(GetTickCount - t.dwTime); //这里是msend;-------------------------------------无敌分割线----------------------------------------------type PLastInputInfo = ^TLastInputInfo; {$EXTERNALSYM tagLASTINPUTINFO} tagLA
阅读全文
用代码打开文件或者文件夹的属性
摘要:1 var 2 sei: SHELLEXECUTEINFO; 3 FileName: string; 4 begin 5 FileName := 'C:\a.a'; 6 with sei do begin 7 cbSize := SizeOf(sei); 8 fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI ; 9 Wnd := Self.Handle;10 lpVerb := 'properties';11 lpFile := PChar(FileN
阅读全文
让鼠标穿透窗体
摘要:1 var2 ws: DWORD;3 begin4 ws := GetWindowLong(Form1.Handle, GWL_EXSTYLE);5 ws := ws or WS_EX_TRANSPARENT;6 ws := ws or $80000;7 SetWindowLong(Form1.Handle, GWL_EXSTYLE, ws);8 end;
阅读全文
把普通函数指针,变成对象方法指针
摘要:delphi里的普通函数指针pointer 为4个字节,但是对象的方法指针是8个字节,由对象指针self(4字节)和函数指针(4字节)组合而成.了解了这句话,将普通的函数指针变成对象的方法指针就不是难事了.这种手段只能用于对象方法只有Sender这一个参数的情况.下面是简单的例子代码. 1 procedure Button2Click(Sender: TObject); //这里是一个普通的函数 2 implementation 3 4 {$R *.DFM} 5 procedure Button2Click(Sender: TObject); 6 begin 7 ShowMessage(
阅读全文
进度条窗体的源代码 - Delphi
摘要:1个窗体,1个unit先说调用方法吧,刚才在csdn里也贴了这段代码..不过没写详细使用方法...汗.. 1 CreateProgressDlg(); 2 try 3 while () do begin 4 UpdateProgressDlg(); 5 if ProgressCanceled then 6 break; 7 end; 8 finally 9 DestroyProgressDlg();10 end; View Code 1 //--------------------------------------------进度条窗体----------------------------
阅读全文
得到当前活动窗体的标题
摘要:1 function GetActiveWindowText: string; 2 3 var 4 hnd: HWND; 5 6 stlen: Integer; 7 8 begin 9 10 hnd := GetForegroundWindow;11 12 stlen := GetWindowTextLength(hnd);13 14 SetLength(Result, stlen);15 16 GetWindowText(hnd, PChar(Result), stlen);17 18 end; 顺便一提,GetActiveWindow只能得到调用进程内的窗体Handle.
阅读全文
在ColorDialog里预置自定义颜色
摘要:用起来还真的挺麻烦. 1 const 2 ColorPrefix = 'Color'; 3 4 var 5 6 i: integer; 7 8 begin 9 10 for i := 0 to 15 do11 12 ColorDialog1.CustomColors.Values[ColorPrefix + Char(Ord('A') + i)] := IntToHex(Color_Ary[i], 8); 13 14 end;
阅读全文
将结构体存入Access数据库
摘要:懒得修改了。参数里应该再加一个字段名称,有兴趣的修改一下。。。目前是根据VersionNO来判断,读的时候也可以根据数据库中流的长度来比较。。最好是通过外界手段。。自己控制吧。。。只要是连续内存的东西,都可以拿来存... 1 function TDataModuleDataBase.LoadRecFromDB(const aName, TableName: string; 2 var Rec; RecSize: Integer): Boolean; 3 var 4 MS: TMemoryStream; 5 begin 6 Result := False; 7 if Trim(aName)=
阅读全文
PopupMenu响应鼠标左键
摘要:OnMouseUp1 var2 aPoint: TPoint;3 begin4 if Button = mbLeft then begin5 GetCursorPos(aPoint);6 PopupMenu.Popup(aPoint.x , aPoint.y);7 end;8 end;
阅读全文
ListBox类似组件,鼠标右键点击事件得到选中Item
摘要:允许多选的ListBox需要加判断.可以参考被注释掉的代码.不再赘述. 1 //OnMouseUp: 2 3 var 4 APoint: TPoint; 5 Index: Integer; 6 begin 7 if Button=mbRight then 8 begin 9 APoint.x := X;10 APoint.y := Y;11 Index := ListBox.ItemAtPos(APoint, True);12 {if (ListBox.SelCount <= 1) and (Index >= 0) then begin13 SelectedList
阅读全文
ADO读取Excel Sheet
摘要:sheet的第一行被ADO读为表名.其他操作和其他数据库类似.1 ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' +2 'Data Source=' + TargetXlsFileName + ';Mode=Share Deny None;Extended Properties="Excel 8.0;IMEX=1";' +3 'Persist Security Info=False;Jet OLEDB
阅读全文
将某个MenuItem移动至右侧,即Help sytle.
摘要:调用时1 //右侧显示2 3 SetMainMenuAlignment(MainMenu1, True);4 5 //左侧显示6 7 SetMainMenuAlignment(MainMenu1, False); 不多说了....这个东西貌似也没什么实际用途...无聊写着玩吧.. 1 //============================无敌分割线===================== 2 3 //将某个MenuItem(包括其右侧所有MenuItem),移动至右侧 4 5 procedure SetMenuItemAlignment(MainMenu: TMainMenu; Men
阅读全文
MIDAS中传递自定义结构体
摘要:MIDAS中不可以传递自定义的结构体,或者数据流之类的.可以借助Variant来实现这一功能. 1 //将VarArray转换成结构体,这种转换只需要设计接口时传回Variant和Rec的Size就可以了. 2 3 procedure VarAryToRec(aVar: Variant; const Size:Integer; var Rec); 4 var 5 pb: PByteArray; 6 i: Integer; 7 begin 8 FillChar(Rec, Size, 0); 9 pb := @Rec;10 for i := 0 to Size - 1 do begin11 Pb^
阅读全文
一个有趣的组合算法
摘要:一般的寻找某个集合的子集组合,都是使用递归..找到了一个有趣的算法,实现了连续自然数的子集组合算法...稍微修改一下,就可以实现任意集合的子集组合查找.组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。 然后从左到右扫描数组元素值的“10”组合,找到第一个“10”组合后将其变为 “01”组合,同时将其左边的所有“1”全部移动到数组的最左端。 当第一个“1”移动到数组的m-n的位置,即n个“1”全部移动到最右端时,就得 到了最后一个组合。例如求5中选3的组合: 1 1
阅读全文
ModBus RTU,CRC,数据转换代码
摘要:1 //====================================================================== 2 3 function ModBusCRC(Data: string): string; //生成modbus CRC数据 4 var 5 CRC16Lo, CRC16Hi, CL, CH, UseHi, UseLo: Dword; 6 i, index: integer; 7 begin 8 CRC16Lo := $FF; //CRC16Lo为CRC寄存器低8位 9 CRC16Hi := $FF; //CRC16Hi为CRC寄存器高8位10.
阅读全文
浙公网安备 33010602011771号