随笔分类 - Delphi
摘要:在用delphi操作word时,发现在如何客户机子上使用的时word 2007 sp2时会有问题,程序控制word进行"WordDoc.Range.Find.Execute"文字替换时出现提示“占用程序收到错误的数据”。而在2003,2010的word没有这个问题。解决方法,不使用delphi自带的封装的TWordApplication,TWordDocument对象,使用Variant类型,动态创建所需要的对象如:WordApp := CreateOleObject('Word.Application');。Variant是个全能的“万金油”所以没有代码自
阅读全文
摘要:引自:http://hi.baidu.com/yehe2316/blog/item/d66d3b03b4440a064afb51f0.htmlDelphi7 内存管理及 FastMM 研究[转]作者:刘国辉一、引言 FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用,就连 Borland 也在delphi2007抛弃了自己原有的饱受指责的内存管理器,改用FastMM. 但是,内存管理的复杂性以及缺乏 FastMM 中文文档导致国内许多人在使用时遇到了许多问题,一些人因此而放弃了使用,我在最近的一个项目中使用了FastMM,也因...
阅读全文
摘要:描述一下运行环境,几个存放MDI Child 子窗体的DLL和一个管理这些子窗体MDI主程序.在主程序中动态调入DLL子窗体首先,DLL中的Application和MDI主程序中的Application是不同样的。要将MDI主程序中的Application替换掉DLL中的Application其次,在工程->属性->packages->Runtime packages->勾选Build with runtime packages,重新编译。这个也是最让人晕的
阅读全文
摘要:一,定义://1. 标准方法:varMyArr: array[0..10] of Integer; //定义静态一维数组//2. 根据预定义类型来声明数组:type TMyArr = array[0..10] of Integer; //先定义一个数组类型var MyArr: TMyArr; //再定义静态数组//3. 在非过程区可以直接赋值:MyArr: array[0..2] of Integer = (11,22,33);//4. 多维数组:MyArr: array[0..2, 0..2] of Integer;begin MyArr[1,2] := 100;end二,求数组长度:con
阅读全文
摘要:最近在用delphi将一个图形控件以activex方式做成可以在IE上运行的OCX,遇到了些问题,在此备忘一下一 OnDestroy事件运行不了!释放问题通常我们会在窗口的OnDestroy里面写程序中的释放代码,但ActiveForm,当窗口销毁时确不会调用OnDestroy事件解决方法:重载DoDestroy函数,如下:procedure DoDestroy; override;//释放的代 写在这里面二 ActiveForm与普通Form的传参问题解决方法一:procedure TActiveFormX.Button1Click(Sender: TObject);var f: TForm
阅读全文
摘要:delphi2009中创建一个简单的OCX控件例子一,创建工程从File-New-orher-ActiveX-ActiveXLibrary后,会创建一个类型库的project1.DLL工程这时只要再加入一个ActiveForm,IDE自动将工程转成了project1.ocx在ActiveForm中拉入一个edit和一个button,名字默认即可.编辑Type Library,加入一个edtText属性在ActiveForm中编辑Get_edtText和Set_edtText的加上以下实现代码function Ttest.Get_edtText: WideString;begin Result:
阅读全文
摘要:写了一个测试代码, 创建一个窗体拉上一个按钮控件,复制以下的代码unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;C1=class//(TPersistent) pr
阅读全文
摘要:TObject = class //创建 constructor Create; //释放 procedure Free; //初始化实列 class function InitInstance(Instance: Pointer): TObject; //清除实列 procedure CleanupInstance; //获得类的类型 function ClassType: TClass; //获得了的名称 class function ClassName: ShortString; //判断类的名称 class function ClassNameIs(cons...
阅读全文
摘要:一、owner和parent的区别: parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下: (1)在form1的窗体上,放一个panel1,并将panel1拉大, (2)在panel1上放一button1; (3)在form1上放一button2。 现在如果移动panel1,则button1随着panel1移动,这是因为button1的parent是panel1。现在将button2移到panel1上,再次移动panel1,button2并不跟着移动,这是因为button2的parent是form1。除在窗体设计中,应注意构件的parent是谁外,在动态创建构...
阅读全文
摘要:有时随着项目改变开发语言也要换,今天用C#,明天可能就用DELPHI,在此把DELPHI文件结构备忘一下unitUnit1;interface{接口部分开始}uses{引用单元列表,这是可选的,如果包含必须紧跟interface关键字}{接口部分声明常量/类型/变量/过程和函数,这些声明对引用单元就像自己的声明一样}{在接口部分声明的过程和函数,就像使用了forward关键字}{接口部分结束}implementation{实现部分}uses{如果包含uses字句,必须紧跟关键字implementation}{在这里实现interface中定义的过程和函数,可以任意顺序的定义和调用.}{在这里可
阅读全文
摘要:控件关联的实现控件的关联在Delphi中也是很常见的,我们可以设定一个控件的某个属性指向另一个控件。比如我们在窗体上放上Tedit,TpopupMenu两个控件,然后设定Tedit的PopupMenu属性为TpopupMenu控件,运行后在Tedit点击右键就会弹出刚才设定的那个TpopupMenu菜单,也就是说Tedit,TpopupMenu联手完成了任务。再比如TDBEdit控件的DataSource属性就可以指向一个TdataSource控件,这样就可以在TDBEdit控件中显示TdataSource输出的某个字段的值了。 下面我们将写一个简单的实现控件关联的控件。这个控件派生于Tedi
阅读全文
摘要:我们这个控件将演示控件的自定义事件的书写。这个控件有一个类型为string的SensitiveText属性,当用户在输入框中输入的文字为InvalidText时就会触发OnSensitiveText事件。按照惯例,我先把源码展示给大家:unit TextSenseEdit;interfaceusesSysUtils, Classes, Controls, StdCtrls;typeTSensitiveTextEvent = procedure(AText: string) of object;//方法指针TTextSenseEdit = class(TEdit)privateFSensitiv
阅读全文
摘要:有人说过“不会开发控件的Delphi程序员不是真正的程序员”。Delphi正是由于高度的可扩展性和大量的第三方控件的支持才能吸引无数程序员挑剔的目光。即使是由于工作需要使用其他开发工具的开发者也常常怀念和Delphi度过的日日夜夜。接触Delphi已经一年多了,从当初对着Delphi组件面板上上百个控件不知所措,到现在已经可以根据需要开发一些有一定难度的控件,其中走过的路是十分艰辛的,所以特此写下这篇文章,将自己的经验留给后来者,也算是献给“同门师弟”的一份厚礼吧! 需要说明的一点是:在写这篇文章之前我假设读者已经对面向对象的基本知识有一定的了解,所以对于文章中面向对象相关的概念将不再展开讲.
阅读全文
摘要:近日在delphi中向ACCESS插入数据库老是提示‘Exception class EOleException with message 'INSERT INTO 语句的语法错误。’非常怪,在ACCESS中的SQL视图中确可以运行,未有语法问题,在试来试去总算发现在插入的安段中加上中括号就可以解决,之前的都不会估计是此次表内的某个安段成为ACCESS或ADO之类的关键字影响吧!在此记录备忘一下
阅读全文