delphi7教程总结

delphi7教程总结
delphi7教程总结

delphi7教程总结

Delphi7.0编程规范

第一部分:软件安装与控件安装方法

一、软件安装:光盘或网络安装后,将光盘CRACK目录下dent.slip拷贝到安装路径下。未注册信息将不再显示。

二、基本安装:

1、对于单个控件,Componet-->install component..-->PAS或DCU文件--

>install; 2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可; 3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl 文件名即可; 4、如果以上Install按钮为失效的话,试试Compile按钮;

5、是run time lib则在option下的packages下的runtimepackes加之。如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决: 1、反安装的源文件拷入到Delphi的Lib目录下;

2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。注意:所安装的控件是否与你所用的Delphi版本相适应。

三、控件删除:

在Component/Install Packages中删除。

选Component/configure Palette…

有pages和components两个区域

双击components区域,选中要删除得控件,下面有得Delete按钮

但系统提供的控件只能Hide,不能delete。

打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可如果是整个控件包都要删除的话,project->Option->Packages,删掉那个packages 四、详细控件安装

1、 Ehlib控件

运行Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\DclEhLib70.dpk文件,在弹出窗口中点击Conpile,再点击install,提示安装成功后在Delphi—Tools—Environment Options—Library—Library Path中添加路径

Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\

2、 Fastreport 控件

分别运行fastreport 2.53\source\fr7.dpk,

fastreport 2.53\source\ado\ FRADO7.dpk,

fastreport 2.53\source\BDE\FRBDE7.dpk,

fastreport 2.53\source\DBX\FRDBX7.dpk fastreport

2.53\QueryBuilder\Source\dclOQB70.dpk fastreport

2.53\QueryBuilder\Source\ADO\dclOQBADO70.dpk

fastreport 2.53\QueryBuilder\Source\BDE\dclOQBBDE70.dpk

fastreport 2.53\QueryBuilder\Source\DBX\dclOQBDBX70.dpk,

fastreport 2.53\QueryBuilder\Source\IBX\dclOQBIBX70.dpk文件,

在弹出窗口中点击Conpile,再点击install;

安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径: fastreport 2.53\source

fastreport 2.53\source\ado

fastreport 2.53\source\bde

fastreport 2.53\source\dbx

fastreport 2.53\source\ibx

第 1 页共 22 页

fastreport 2.53\QueryBuilder\Source

fastreport 2.53\QueryBuilder\Source\ado fastreport

2.53\QueryBuilder\Source\bde fastreport 2.53\QueryBuilder\Source\dbx fastreport 2.53\QueryBuilder\Source\ibx 3、Raize控件

分别运行Raize\RC3\Source\Rz30Ctls_Dsgn70.dpk,Raize\RC3\Source\

Rz30DBCtls_Dsgn70.dpk,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径:Raize\RC3\Source

4、VirtualTreeview控件

VirtualTreeview4.0.12\VirtualTreeview\Packages\VirtualTreesD7D.dpk文件,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路

径:VirtualTreeview4.0.12\VirtualTreeview\Packages 5、xlreport控件分别运行xlreport\xlr4pro123.exe和xlreport\xlr4dfull123.exe,注意安

装过程中只保留delphi7和demo两个选项即可,安装完毕后将安装路径下的AfalinaSoft\XL Report 4\Source文件夹的所有文件拷到AfalinaSoft\XL Report 4\d7units中,运行d7XLR4_D.dpk文件;同样将

AfalinaSoft\ProOptionPack\Source内的所有文件拷到

AfalinaSoft\ProOptionPack\d7units中,运行d7OPack.dpk文件

五、第三方控件的下载与安装:用到的第三方控件在了解其用途后,经主任审

批后,方可进行安装。六、控件功能的学习方法:凡第三方提供的控件均有DEMO

的演示示例,可根据所学知识查看其属性设置及事件,运行演示结果,便可学习控件的功能,领会其功能,做到灵活运用。

七、将经常用到的控件直接拖动放在前面,使用起来比较方便。

第二部分: 程序设计要求:

一、所有代码必须有注释。所有代码单行的注释用(//),多行的注释用{},注释用中文。每段程序的注释说明要简洁明确,说明程序编制的目的及主要功能,按照系统分析文件的功能节点进行分段注释。每段开头与结尾分别用一行’/’包括。在每个功能段内部根据具体情况进行分段注释,每段开头与结尾分别用一行’/’包括。

1、程序(unit)头的注释:标明对应的系统分析文件名和最早开始编制时间。

2、函数(过程)(function, procedure)头的注释内容包括:

(1)函数(过程)的目的(purpose)。

(2)函数(过程)返回值(结果集)(return value)的类型及含义(程序标准事件不用标明)。 (3)函数(过程)参数(parameters)的类型及含义列表(程序标准事件不用标明)。 (4)函数(过程)中使用的临时变量(var)的类型及含义列表。

二、所有项目、窗口、单元、控件、菜单等按照命名规范命名。

1、项目命名:“P”+项目描述的第一个声码。

2、Form命名:使用系统分析文件的程序名拼音头字母命名窗口。如结存查询,窗口命名为jccx.再往下一级延伸的,在上级窗口名后加能区分要求的拼音头字母来命名。

3、Unit命名:Unit的名称(name)用字母U后跟相应的Form名称。

4、自定义过程、函数(procedure, function)命名:使用函数目的的拼音头字母命名。

5、简单变量、参数命名:使用变量含义的拼音头字母命名。

第 2 页共 22 页

6、控件命名:一般情况下延用默认名。Query控件命名:query有复用的情况,命名时用qy1,qy2…标准命名,特定的query,命名时用“qy”+对应表名。

7、菜单命名:延用默认名,含右键菜单。

三、所有直接调用DBGridEh的录入类程序必须添加标准右键菜单。

四、所有查询类程序必须有序号、合计,合计用页脚方式,动态形成序号,必须添加标准右键菜单,窗口必须有caption,必须标明系统分析人员、程序编制人员,所有录入类、循环计算类不得出现MESSAGE框为SQL语句代码,所有编译后的程序设置的断点要清除。

五、所有窗口均按照1024X768设置,窗口显示位置为桌面居中位置(设置position属性为poDesktopCenter),大小为占桌面屏幕的1/4为适,所有窗口必须设置为置前属性(设置Formstyle属性为fsStayOnTop),保证调用子窗口时显示在最前。

六、Dbgrideh的菜单使用右键标准菜单,包含筛选、升序、降序、多行合计、导出excel,基础库维护时还要有多行替换功能。

七、所有月份数据要形成月份表,如qcsjb、mksyjlb,并同时修改查询程序,利用通用的月份查询函数,每个月底要进行结转。

八、所有连接非SQL数据库的表(接口程序除外),必须建立SQL表,维护后导出,不允许直接读写。九、编制程序要充分考虑输入时的出错情况:判断是否输入了空格,是否输入了不合规则的内容,判断大小写,在程序中做出判断和限制。如包装入库数据,导出VFP时必须为大写,可以直接将录入的内容转换在大写,再如进入结存数据,先判断录入的产品是否是存在的产品,否则造成结存表中的数据不正确。十、所有单位引用统一、维护一致、显示顺序按照包装、加工、库……显示,考核汇报除外。十一、对基础库维护信息都要记录,除记录字段更换信息外,还要求录入员和更新时间。十二、实时计划、外贸业务、成本管理各类程序

增加一级界面(点击主窗口按钮即显示的界面)时,均增加记录使用人、使用机器IP、使用计数信息,具体方法:在新增form的

onshow事件中增加程序类型(ssjh、unit1、cbgl)+‘.jrmk(self.Caption)’;

onclose事件中增加程序类型(ssjh、unit1、cbgl)+‘.lkmk(self.Caption)’; 语句,用于记录模块使用信息。

十三、用程序实现的数据更改,在程序试运行前必须经主任审批,主任不在时

由代理人员审批。十四、所有录入类、查询类中的必须录入项,如没有录入必须

提示,否则不能执行。十五、所有计算类程序实现,先查看数据类型,用QY连接实现公式计算的,参照SQL函数使用方法,用DELPHI连接字段或变量计算的,参

照DELPHI函数使用方法。

十六、代码必须采用缩进格式表示嵌套,多层嵌套的也遵循此规则。标准格

式,如下: 缩进快捷键:CTRL+SHIFT+I为向后,CTRL+SHIFT+U为向前,选中部分块后可以直接按快捷键操作。输写各层嵌套时可先将BEGIN……END对应,然后再进行

嵌套。

while do

begin

if then

begin

if then

begin

end

else

begin

end;

end

else

begin

end;

第 3 页共 22 页

end;

十七、跳转语句语法:

1、if 语句:会计算一个表达式,并根据计算结果决定程序流程。If保留字后跟随一个生成boolean值

True或False的表达式。一般用“=”作为关系运算符,比较产生一个布尔型值。当表达式为True时,执

行Then后的语句。否则执行else后的代码,if语句也可以不含else部分,表达式为False时自动跳到

下一行程序。If语句可以嵌套,当使用复合语句表达时,复合语句前后需加上begin……end。Else保留

字前不能加“;”,而且,编译器会将ELSE语句视为属于最靠近的IF语句。必要时,须使用begin……end

保留字来强迫else部分属于某一级的if 语句。

(1)、单个条件:

if 条件 then

A、待执行语句单行时:

执行语句;

B、待执行语句多行时:

begin

语句1…

语句2…

……

end;

(2)、选择条件:

If (条件1) and (条件2) OR(条件3)…… then (3)、ELSE使用语法:

If 条件 then

语句1

Else

语句;

(4)、以上可以多层嵌套,每个嵌套里面均遵循以上语法。 2、case语句:

Case语句适用于被判断的变量或属性是整形、字符型、枚举型或子界型时用case语句进行逻辑跳转比编

写复杂的if 语句容易阅读,而且程序代码整形较快。例: Procedure Tform1.button1click(sender:Tobject);

Var

Number:integer;

Begin

Number:=strtoint(edit1.text); case number of

1,3,5,7,9:label2.caption:=’奇数’;

0,2,4,6,8:label2.caption:=’偶数’;

10..100:

Begin

Label2.caption:=’在10到100之间’;

Form1.color:=clblue;

End;

Else

Label2.caption:=’大于100或为负数’;

END;

END;

第 4 页共 22 页

END.

十八、循环语句语法:

1、repeat语句

i:=0;

repeat

i:=i+1;

writen(i);

until i=10;

2、 while 条件 do

begin

end;

3、升序:for i:=0 to a do/降序: for i:=a downto 0 do

begin

end;

十九、在应用程序中所有QY的connection设置为主FORM中的Adoconnection,所有的连接数据库设置均

在INI文件中实现。

二十、多条语句不能写在一行,一条语句过长应分行写,分行尽量做到平均、层次性与语句的完整性。例: qy2.SQL.Add('update '+bm+' set

jhdh=jhdh*'+qy1.FieldByName('lb').AsString+' '+

'where rq='''+zxrq+''' and

gx='+''''+ListBox1.Items[ListBox1.ItemIndex]+''' '+

'and charindex(xm,'+''''+qy1.FieldByName('sm').AsString+''')>0');

二十一、程序流程要清晰,一条sql语句实现的功能要单一。Sql查询结果使用虚拟表保存的,使用前后清除虚拟表。

二十二、使用else语句时要避免语句过长,造成if else混乱。

二十三、多个系统调用的模块,要形成DLL文件,要有模块使用记录,更新时同步更新。二十四、遇到需要与VFP接口的程序,要将VFP表维护好以后形成SQL表,不能直接连VFP表,导出VFP表后在原程序中使用。

二十五、sql与delphi常用函数对照、使用方法及注意事项:

1、在delphi程序中用变量取数据库表中字段值时,用DELPHI的类型对应SQL 表字段中的类型来声明变量的类型。

2、在程序中执行SQL语句时,用SQL语句的语法。

3、经常用到的函数列表:

delphi sql

字符型 string varchar,nvarchar,char,text 字段整型 integer int

类型小数型 double float,numeric

日期时间型 tdatetime datetime

截取 Copy(maskedit1.text,1,2) substring(rq,1,2)

Pos(‘101’,qy1.fieldbyname(Charindex(‘101’,bhxs) 字符位置

‘bhxs’).asstring)

Round(4.5)=5;round(3.5)=3;函

函数数取值规则为四舍六入,五取偶,

取小数位数Formatfolat(’0.00’,1.1234)Round(1.1234,2)=1.12

=’1.12’

取整 Trunc(4.9)=4 Round(1.1234,0)=1

第 5 页共 22 页

Inttostr(qy1.fieldbyname(‘dCast(ddqs as varchar(10))

dqs’).asinteger),floattostr类型转换 convert(int,a.LcLastDate+10-

a.,strtoint,strtofloat,datetimsndate) etostr

取长度 Length() Len()

大写 Uppercase() Upper()

小写 Lowercase() Lower()

去左边的空格Ltrim() 去空格 Trim 去右边的空格Rtrim()

举例如下:

je:=strtofloat(formatfloat(‘0.00’,

qy1.fieldbyname(‘dj’).asfloat*

qy1.fieldbyname(‘ddqs’).asinteger));

qy1.sql.add(‘select round(cast(hgjs as float)/cast(jhjs as

float),2)… ’)

4、所有Format+类型的函数,返回的类型均为字符型,在使用时注意,类型要对应。

5、整形的字段进行数值计算时必须先转换成float型后再计算。二十六、函数、过程的使用:

1、函数的声明:

函数头:

Function<函数名>(<形式参数表>):<类型>;

函数体:

Begin

<语句>;

<语句>;

……

<语句>;

END;

2、在函数体中必须有一个赋值语句,将函数的返回值赋给函数名。例: Function Total(x,y:integer):integer; Begin

Total:=x+y;

End;

3、函数的调用:例:

Procedure Tform1.Button1Click(Sender:Tobject);

Var

X,y,z:integer;

Begin

X:=2;

Y:=3;

Z:=total(x,y);//调用函数

Label1.Caption:=inttostr(z); End;

End.

4、函数在主FORM中声明,其它模块调用时,在USES窗口位置处,加引用的单元文件名,调用方法为FORM

名+“.”+函数名。按函数设置的参数赋值。

第 6 页共 22 页

5、函数与过程的差异:过程的关键字为Proceduce,在函数声明中,必须指明函数的返回类型,而过程不需要返回任何类型的值,无需声明返回类型,在函数体中,必须将函数的返回类型赋给函数名,而在过程中则不存在此语句。

6、函数及过程其它要求:

A、函数体或过程内容的编制在FORM的begin……END范围之内进行编制,是单独的,不要含在其它的控件或事件之内。

B、函数或过程内容查看方法:按CTRL+SHIFT+鼠标点击,然后按向下箭头,便可达到函数体或过程内容。

C、函数体内容的编制方法:先进行函数或过程声明,函数/过程命令+FORM名+函数/过程名+(参数1:类型;参数2:类型;)注:返回的参数值与定义的类型一致,form名要与当前的FORM名一致,在BEGIN……end之间编制实现功能。例:Procedure Tcbgl.sx1(component:string;form:string);

D、函数或过程引用:函数或过程所在的FORM名+“.”+函数或过程名+(参数1值,参数2值……),非参数定义的变量,要先赋值,再引用。

例:cbgl.sx1(https://www.360docs.net/doc/839280222.html,,'ZZCLMX');

E、对不同的数据或通过参数赋值,执行同样的程序语句,多次复用的要抽出来做成函数或过程,以实现代码优化与复用。

F、跨月查询函数语句调用方法:当月表名不带月份时,调用fycx函数,带月份时调用fycx1函数。具体方法:函数名(起始日期,截止日期,'表名',1);

a:='';

a:=a+' select 字段 from '+zzbm[0]+' 条件';

for i:=1 to zzbm.Count-1 do

begin

a:=a+' union all select 字段 from '+zzbm[i]+' 条件'; end;。

二十七、公共属性部分:

序号属性名称属性说明

1 Caption 设置窗口、控件等的显示内容。

2 name 窗口、控件的名称。

3 visible 窗口、控件是否可视。

4 enabled 窗口、控件是否获得焦点。

5 Taborder 控件获得焦点的顺序。

6 Align 控件布局。

7 font 字体各项设置。一般设定宋体11

8 readonly 设置控件是否只读。

二十八、常用事件列表:

序号事件名称事件说明

1 onshow 窗口显示时触发,在此事件中一般声明公共变量、函数过程等,格式设置,dbgrideh、combobox等控件的数据来

源实现,动态设置控件属性内容。

2 onclose 关闭窗口,释放内存。Form名.Release

3 onclick 控件单击时触发。一般情况用在命令按钮中。

4 ondbclick 双击控件时触发。一般用在DEGRIDEH控件中。

5 onchange 当控件内容改变时触发。一般用在COMBOBOX、RZEDIT等此类控件。

6 onexit 当焦点离开控件时触发。一般用在非DBGRIDEH控件实现

的数据录入,如统一领转录入。

7 onkeypress 通过键盘操作触发,一般用于回车键代替TAB键。

第 7 页共 22 页

8 Beforepost 读取数据表中数据,有改变的记录,在更新记录之前触发的事件,一般用于记录更新信息及自动计算项目。一般用

于QY控件。

9 afterpost 更新完数据后触发,一般用于记录更新后信息。一般用于QY控件。

二十九、虚拟表使用方法:

1、虚拟表命名方法:#+表名;

2、判断虚拟表是否存在,如果存在则删除:

qy1.Close;

qy1.SQL.Clear;

qy1.SQL.Add(‘if object_id(‘’tempdb..#1’’) is not null’); qy1.SQL.Add(‘drop table #1’);

qy1.execsql;

3、创建虚拟表方法:

a.qy1.Close;

qy1.SQL.Clear;

if object_id(‘’tempdb..#1’’) is null’); qy1.SQL.Add(‘

qy1.SQL.Add(‘create table #1(字段名字段类型)’);

qy1.execsql;

b.qy2.Close;

qy2.SQL.Clear;

qy2.SQL.Add(‘select * into #1 from jcb’);

qy2.execsql;

4、对虚拟表进行更新和追加时,要使用update和insert语句,不能使用edit和append,避免出现忽

略数据库名称的错误。

5、对虚拟表使用后要进行清除,避免再次调用时系统报错。

三十、调试程序:当程序出现错误不好查明原因,或运算结果不是想要的结果时,可以进入调试程序,跟

踪运行阶段的各个状态,以便更好地分析错误的原因。

1、单步执行:run-step over/f8,单步执行将把整个过程或函数当做一行,调试器每执行一行,当前执

行点就自动移到下个要执行的行。

2、跟踪执行:run-Trace into,一次只执行一行,当执行到有过程或函数调用的行以后,当前执行点将

进入过程或函数的内部。

3、跳过一段代码:RUN-Run To cursor,以非调试方式执行到光标所在的行,然后调试器接管对程序运行

的控制,还可以再选择单步或跟踪执行。

4、返回到执行点:RUN-Show Execution Point,如果已执行完,调试器将重新打开此窗口。

5、暂停运行:Run-Program Pause:使程序运行暂时停止。

6、重新开始运行:Run-Program Reset,终止程序的运行并释放所有占用的内存和资源,并闭所有打开

的文件,清除所有的变量设置,然后重新运行程序,但不删除先前设置的断点和观察窗口。三十一、如果在表中设置字段的默认值,录入时经常出现“键列信息不足”,所在在编制程序时,所有

字符型字段取值=isnull(字段名,’’)。---08.07.08增

第三部分控件的详细使用方法

一、模块设置方法:

1、将单元文件拷到相应的工程文件夹下,打开工程文件后再打开单元文件。

2、点击Project->Addtoproject,选择相应的单元文件加入工程。

第 8 页共 22 页

3、点击Project->options,进入工程属性设置界面,在forms界面可以选择主界面main form;在application可以设置exe文件图标icon。

4、单元文件的声明:在单元文件程序代码窗口中,implementation 和{$R *.dfm}两部分中间添加uses 加main form的单元文件名,如果当前单元文件需要调用其他单元文件、或者其他单元文件的控件、虚拟表或者其他公共变量时,还需要在uses后添加其他单元文件名,例如:

implementation

uses ucbgl(main form,主要利用它的ADOConnection、各类函数、过

程),usjcx(公共窗口),uyhdl(登录窗口,主要利用它保存的登录人相关信息);

{$R *.dfm}

5、将单元文件中的数据连接控件query的Connection属性设置为工程main form中的ADOConnection控件名。

6、在总菜单中添加新增的按钮的caption属性,及onclick事件程序,例如

If Application.findcomponent(‘cgjhtb’)=nil Then

Application.CreateForm(Tcgjhtb,cgjhtb);

cgjhtb.show;

并记录下此按钮的名称(name)。

7、在本单元用到系统自带函数或类时,在interface 下uses 中进行定义。例:inifiles 二、权限设置方法:控件:standard--ActionList1

1、双击main form的actionlist1,双击后点击new action,添加新的actions,命名为”q”+form名。

定义actions的caption属性为新增按钮的caption属性,actions的onexecute事件定义为按钮名

称。

2、设置新添加按钮的action事件,选择对应的actions(“q“+FORM名)。

3、删除自动创建项,减少程序运行时占用内存,点击Project->Viewsource

打开工程文件将相应Application.CreateForm(Tform, form);语句删除,只保留主FORM与用户登录的创建语句。 4、菜单权限设置方法(以实时计划8.0设置为例):

A、执行实时计划8.0中的权限管理菜单下的权限管理按钮,查看新添加的按钮的上级模块的模块数及命

名,填写在上级模块对应的2文本框中,根据显示当模块总数,并在新增模块中对应的2个文本框中

填写新增按钮的模块数(模块总数+1),及新增按钮的caption属性,点击确定。 B、选择需添加权限的角色,在左边的系统资源中添加、更改选择角色的权限。如果还没有该角色,则首先在上、下角色框中分别输入上级角色、角色后点击添加按钮。

三、事务处理使用方法:

当更改性操作数据均要求使用事务处理,输入类、计算类均要求使用事物处理,可以重复计算且计算量大的、数据感知控件直接更新数据库数据的,为减少服务器负载,可以不用事务处理,示例如下: cbgl.ADOConnection1.BeginTrans;(把要执行的语句放入内存)

TRY(开始试执行)

更新或计算语句

https://www.360docs.net/doc/839280222.html,mitTrans;(把已经更新的数据更新到数据库中,释放内存)

提示执行完毕,在运行过程中使用时不用提示。

Except

如果执行不成功

cbgl.ADOConnection1.RollbackTrans;(执行数据回滚,把已更新的恢复到未执行状态)

提示未能执行,计算类的关闭窗口,录入类的,清空已输入的内容。

end;

四、ADOConnection控件使用规范,控件:ADO--ADOConnection1 1、commandtimeout:连接自动跳出时间,设置为200;

2、connectionstring:设置数据库的连接属性;

第 9 页共 22 页

3、loginprompt:是否输入用户名和密码;

4、ADOConnection连接数据库设置方法

(1)静态连接:

点击ADO,点击ADOConnection,设置其属性connectionstring为数据库的连接属性。Loginprompt设置为FALSE,在运行程序时不提示数据库的密码录入界面。点击ADOQUERY设置connection属性为相应的ADOConnection名。

(2)ini文件连接方法:

ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+'cbgl.ini' );

ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;password='+pw+ ';Persist Security

Info=False;User ID=SA;Initial

Catalog='+ini.ReadString('SERVER','DATANAME','')+';

Data Source='+ini.ReadString('SERVER','servername','');

(3)注意事项:使用INI文件连接时,connectionstring为空。

五、日期设置标准方法:使用MaskEdit控件,控件:additional-- MaskEdit1

1、设置MaskEdit属性为!99/99/00;1;,并将character for blanks设置为‘‘

2、设置MaskEdit的autoselect属性为false

3、在form的oncreate或onshow事件中增加

DateSeparator:=’.’;

ShortDateFormat:=’yy/mm/dd’;实现日期格式为‘ . . ’。

4、在控件onchange事件增加

IF MaskEdit1.SelStart=8 THEN selectNext(ActiveControl, True, True);

相关主题
相关文档
最新文档