2016年1月10日
摘要: 近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发。 首先按要求在VFP里创建DBF表,字段数有240个,作为样表,导出时取样表通过文件流拷贝一个新表,并按要求规则命名,拷贝一份新表使用: 1 pr... 阅读全文
posted @ 2016-01-10 15:13 yf658 阅读(900) 评论(0) 推荐(0) 编辑
  2012年7月25日
摘要: 关于delphi中edit控件内容上下居中问题,在网上找了很多,大多介绍的是左右居中,edit左右居中在delphi的高版本里已经增加了一个Alignment属性,设置为taCenter即可,最终在网上找到了上下居中的解决办法,在type加入如下代码:typeTEdit=class(StdCtrls.TEdit)protectedprocedureCreateParams(varParams:TCreateParams);override;procedureKeyPress(varKey:Char);override;procedureWMSize(varmsg:TWMSize);mes... 阅读全文
posted @ 2012-07-25 07:14 yf658 阅读(4962) 评论(0) 推荐(0) 编辑
  2012年6月30日
摘要: SRichViewEdit 表格默认的表格边框,是有表格边框和单元格边框,并且表格边框与单元格边框有2点的边距,单元格与单元格之间也有2点的边距,看起来是双线的,如下图:我平常习惯用单细线边框的表格,为此,对SRichViewEdit插入表格的默认格式进行调整,直接修改RichViewActions.pas单元里表格默认属性默认值,打开RichViewActions.pas,找到constructorTrvActionInsertTable.Create,代码如下: constructorTrvActionInsertTable.Create(AOwner:TComponent);beg... 阅读全文
posted @ 2012-06-30 11:27 yf658 阅读(1484) 评论(0) 推荐(0) 编辑
  2012年5月4日
摘要: 摘要:提出了一种简单的方法将DLL中的窗口融合(嵌入)到其他应用程序或DLL的窗口中,使用本方法可以简便地实现具有强扩展性和升级能力的软件系统。 1、引言 在开发一个大型通用控制系统时曾遇到这么一个问题:该系统软件包由若干个可执行文件和动态链接库组成,因为扩展性和兼容性的要求,需要将系统划分为若干个可执行文件和动态链接库,并且在大部分DLL中封装各自的操作界面,在调用DLL时将其中包含的部分界面嵌入地显示在主界面的某个区域或某个窗口内,与主界面的其他部分浑然一体。这样主程序与DLL在功能操作上各司其职,在外部界面上又彼此交融,使用户可以通过增加和修改DLL来实现对系统内部... 阅读全文
posted @ 2012-05-04 21:56 yf658 阅读(585) 评论(0) 推荐(0) 编辑
  2012年4月28日
摘要: (1)正确认识dll Dll本质上一个独立的应用程序,与exe一样,有自己的地址空间。 因此,dll是一个可装载执行的程序。其他的,不多说了吧。 (2)调用DLL的方法 我用过的有三种。 第一种:用API 因为Delphi支持几乎所有的API,你可以在Delphi中直接调用API装载一个外部DLL。但是我不喜欢这样做,因为我讨厌微软的那套路。 第二种:外部函数引用 做一个单元(unit),引用外部函数。例如: function myDllCall(var i:integer): Integer; stdcall; external 'mydll.dll' name 'm 阅读全文
posted @ 2012-04-28 06:58 yf658 阅读(566) 评论(0) 推荐(0) 编辑
摘要: Delphi用DLL来封装对象的技术主要有三种: 用接口实现 用纯虚和抽象类方法实现 用类引用实现 前两种,都是在DLL中生成类实例;第3种通过在调用方生成实例。三种方法的共同局限如下: 调用方只能调用封装类中的virtual方法; 调用方和提供方都必须提供类的描述,接口实现中需要提供接口描述(COM方法例外); 不能创建DLL包含对象的派生类(接口派生除外)。 首先,用接口实现当然包括COM实现,不过由于COM是一种实现接口技术的独立门类,所以在下面说的接口实现中不包括这方面的东西。其次用纯虚和抽象类方法实现,在《Delphi 6 Developer‘s Guide》中提及的inc... 阅读全文
posted @ 2012-04-28 06:54 yf658 阅读(1427) 评论(0) 推荐(0) 编辑
摘要: TreeView由节点构成,建树通过对TreeView.items属性进行操作。Items是一个TTreeNodes对象,这是一个TTreeNode集。一、针对TTreeNodes,也就是 TreeView.Items,有这些属性: 1、count,节点个数。 2、item[index] ,通过index得到节点。二、针对TTreeNodes,也就是 TreeView.Items,常用的添加节点的操作有: AddFirst添加第一个根节点。由此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。该函数返回新添加的节点。 AddChildFirst添... 阅读全文
posted @ 2012-04-28 06:52 yf658 阅读(277) 评论(0) 推荐(0) 编辑
  2012年4月19日
摘要: 1 TrichView结构TrichView的文档结构由段落和Item组成,如下图绘图的组织形式如下图:2 段落PragraphTRichView文档是通过段落进行组织的,每个段落都有自己的样式,文档内所有的段落样式作为存储为集合(RichView.Style.ParaStyles)在TrichView中,所有的Item都必须指定ParaNo即ParaStyles的索引;设置ParaNo=-1,将延续上个段落的样式;段落主要设置边框和背景,包括:左缩进、右缩进、边框左偏移、边框右偏移..,如下图。3 ItemlItem是文档中的基本绘图单元lItem分为文本Item和非文本Iteml... 阅读全文
posted @ 2012-04-19 06:16 yf658 阅读(2685) 评论(1) 推荐(0) 编辑
  2011年5月1日
摘要: TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。常规的用法大家都知道,现在来讨论它的一些高级的用法。先把要讨论的几个属性列出来:1、CommaText2、Delimiter & DelimitedText3、Names & Values & ValueFromIndex先看第一个:CommaText。怎么用呢?用代码说话:const constr :String = 'aaa,bbb,ccc,ddd';var strs :TStrings; i :Integer;begin strs := TStringList.Create 阅读全文
posted @ 2011-05-01 14:06 yf658 阅读(304) 评论(0) 推荐(0) 编辑
  2011年3月27日
摘要: 循环遍历同类控件:form1中有groupbox1,内有多个speedbutton,控制其同时按下。var i:integer;beginfor i:=0 to form1.groupbox1.controlcount-1 doif form1.groupbox1.controls[i] is tspeedbutton thenbegintspeedbutton(form1.groupbox1.controls[i]).allow‍allup:=true;‍tspeedbutton(form1.groupbox1.controls[i]).groupindex:=i+1; tspeedbutt 阅读全文
posted @ 2011-03-27 07:11 yf658 阅读(996) 评论(0) 推荐(0) 编辑