Delphi中的容器类_陈省
- 格式:doc
- 大小:68.00 KB
- 文档页数:18
delphi⽂件后缀全解delphi⽂件后缀全解1. 项⽬⽂件(.dpr):Delphi项⽬⽂件,⽤于保存窗体、单元等的信息,以及程序运⾏的初始化代码等,这种⽂件实际上包含了Pascal源代码。
2. 单元⽂件(.pas):Pascal⽂件,⽤于保存程序源代码,可以是与窗体有关的单元或是独⽴的单元。
3. 窗体⽂件(.dfm):保存窗体或数据模块及其构件特性的⼆进制⽂件。
4. 选项⽂件(.dof):含有当前项⽬选项设置的⽂本⽂件。
5. Package源⽂件(.dpk):软件包的项⽬源代码⽂件,⽤于管理Packages信息。
6. 资源⽂件(.res):该⼆进制⽂件包含项⽬的图标,由Delphi不断更新和创建,⽤户⼀般不需要修改。
7. 备份⽂件(.-dp,.-df,-pa):分别对应项⽬、窗体、单元⽂件的备份⽂件。
8. Desktop⽂件(.dsk):包含了与Delphi窗⼝的位置、在编辑器中打开的⽂件及其它桌⾯设置有关的信息。
9. 类型库(.tlb):⼀种⾃动建⽴或由类型库编辑器为OLE服务器端应⽤程序建⽴的。
10. 项⽬配置⽂件(.cfg):保存项⽬配置,⽂件名与项⽬名相同,但后缀为.CFG。
11. Code Insight配置⽂件(.dcl):保存IDE中对Code Insight的修改信息。
12. 构件板配置⽂件(.dct):保存IDE中对构件板的修改信息。
13. 菜单配置⽂件(. dmt):保存IDE中对Delphi菜单的修改信息。
14. 容器库修改⽂件(. dmt):保存程序对Delphi菜单容器库的修改信息。
15. ⾏为列表⽂件(.todo):保存当前项⽬的⾏为列表。
⽂件名与项⽬名相同,但后缀为.todo。
下⾯是程序编译后,Delphi⾃动创建的⽂件:1. 执⾏⽂件(.exe):为程序编译后的Windows执⾏⽂件。
2. 单元对象⽂件(.dcu):是单元⽂件的编译版本,会连接到最终的执⾏⽂件中。
Delphi中Frame的使⽤⽅法Frame是组件⾯板上的第⼀个组件,但不是每个⼈都知道怎么⽤它,因为它不像Button和Label ⼀样简单明了。
实际上,Frame按钮只是打开⼀个Frame的列表,如果你没有创建任何的Frame,⾃然什么也不会看到。
那么Frame到底是什么呢?简单来说:1. Frame是组件容器,类似Panel2. Frame在使⽤上类似Components组件,但并没有构造器和解析器,依赖于⽗容器完成Destroy的⼯作3. Frame可以继承和嵌套4. Frame内部的控件都是公开的,可以在IDE⾥重置属性和事件,所以frame的内部封装⼀般都是松散的。
访问frame上的组件⽤frame.control⽅式5. Frame的使⽤范围仅在当前⼯程内6. Frame的使⽤不像⼀般组件component有独⽴的功能,很多时候需要和⽗容器耦合在⼀起看了半天还是不明⽩?看个例⼦吧:上图是⼀个客户信息的Frame,因为在客户信息在很多的地⽅都需要显⽰,并且带编辑,查询,发邮件等按钮。
当然你可以每次⽤到都拷贝⼀遍,但是做成frame组件,⽤的时候只要告诉frame客户id,剩下都交由组件本⾝完成,岂不是⽅便很多?所以,frame和普通components组件⼀样,都是为复⽤设计的。
只是frame是Delphi的特技,是⼀种简化版组件。
如果你有⼀组可视化组件的集合,在多个地⽅重复出现,就应该考虑使⽤Frame了。
如何创建⼀个Frame呢,如图:你可以把frame添加到组件⾯板,如图:Frame在写代码时和⼀般组件有什么不同呢?⽐如(1)中的客户信息的frame,如果想重写客户编辑按钮的click事件,会发⽣什么呢:procedure TBusOnSiteManager.FrameCustomerButtonEditCustomerClick(Sender: TObject); begininherited;FrameCustomer.ButtonEditCustomerClick(Sender);end;可见,IDE会⾃动加上调⽤Frame中按钮click的⽅法,当然,你可以注释掉它,写上⾃⼰的代码。
Delphi 程序设计基础教程第 1 章Delphi 集成开发环境1. 填空题(1) Delphi 是一个集成开发环境,从 3程序设计、代码编译、调试,到最布程序的全部工作都可以在这个集成环境中完成。
(2) 在 Delphi 集成环境的主要组成部分中有许多功能强大的工具,如: 3主窗体、对象树状视图、对象观察器、窗体设计器、代码编辑器工具等。
(3) Delphi 集成开发环境的界面分为4个部分,分别是。
主窗口、窗体窗口、代码编辑窗口和对象查看器窗口(4) 对象查看器的功能是:编辑设置窗体、组件的属性,并为窗体、组件添加事件的响应处理过程(5) Delphi 主窗口由:标题栏、菜单栏、工具栏和组件板组成,它是打开其他窗口和退出D elphi 集成环境的主要界面。
2. 选择题D(1) 对象查看器由组成。
A. 标题栏、菜单栏、属性标签和事件标签B. 标题栏、菜单栏、对象选择器和事件标签C. 标题栏、菜单栏、对象选择器和属性标签D. 标题栏、对象选择器、属性标签和事件标签D(2) Delphi 用来管理用户开发的应用程序中的各个文件,有序地管理可以极大地提高应用程序开发的质量和速度。
A. 单元B. 组件C. 属性D. 项目B(3) 用来编写应用程序的代码。
A. 调试器窗口B. 代码编辑窗口C. 报表生成器窗口D. 数据库桌面窗口B(4) 代码编辑窗口分为左、右两部分:。
A. 左边是单元代码窗口,右边是单元浏览器窗口B. 左边是单元浏览器窗口,右边是单元代码窗口C. 左边是单元调试窗口,右边是单元浏览器窗口D. 左边是单元浏览器窗口,右边是单元调试窗口A(5) 属性选项卡即标签名为“Properties”的选项卡,用于设置当前组件的属性,属性选项卡是一个两列的表格,。
A. 左列是属性标题,右列是属性值B. 左列是组件名称,右列是事件名C. 左列是属性标题,右列是事件名D. 左列是组件名称,右列是属性值C(6) 事件选项卡即标签名为“Events”的选项卡,用于为当前组件添加各种响应事件(如单击、拖曳事件等),它随对象选择器中的所选组件而发生变化。
Delphi操作ACCESS技巧集1.DELPHI中操作access数据库(建⽴.mdb⽂件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第⼆版⽆ACCESS环境下运⾏成功.//在之前uses ComObj,ActiveX//声明连接字符串ConstSConnectionString = 'PRovider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'+'Jet OLEDB:Database PassWord=%s;';//=============================================================================// Procedure: GetTempPathFileName// Author : ysai// Date : 2003-01-27// Arguments: (None)// Result : string//=============================================================================function GetTempPathFileName():string;//取得临时⽂件名varSPath,SFile:array [0..254] of char;beginGetTempPath(254,SPath);GetTempFileName(SPath,'~SM',0,SFile);result:=SFile;DeleteFile(PChar(result));end;//=============================================================================// Procedure: CreateAccessFile// Author : ysai// Date : 2003-01-27// Arguments: FileName:String;PassWord:string=''// Result : boolean//=============================================================================function CreateAccessFile(FileName:String;PassWord:string=''):boolean;//建⽴Access⽂件,如果⽂件存在则失败varSTempFileName:string;vCatalog:OleVariant;beginSTempFileName:=GetTempPathFileName;tryvCatalog:=CreateOleObject('ADOX.Catalog');vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));result:=CopyFile(PChar(STempFileName),PChar(FileName),True);DeleteFile(STempFileName);exceptresult:=false;end;end;//=============================================================================// Procedure: CompactDatabase// Author : ysai// Date : 2003-01-27// Arguments: AFileName,APassWord:string// Result : boolean//=============================================================================function CompactDatabase(AFileName,APassWord:string):boolean;//压缩与修复数据库,覆盖源⽂件varSTempFileName:string;vJE:OleVariant;beginSTempFileName:=GetTempPathFileName;tryvJE:=CreateOleObject('JRO.JetEngine');pactDatabase(format(SConnectionString,[AFileName,APassWord]),format(SConnectionString,[STempFileName,APassWord]));result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);DeleteFile(STempFileName);exceptresult:=false;end;end;//=============================================================================// Procedure: ChangeDatabasePassword// Author : ysai// Date : 2003-01-27// Arguments: AFileName,AOldPassWord,ANewPassWord:string// Result : boolean//=============================================================================function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;//修改ACCESS数据库密码varSTempFileName:string;vJE:OleVariant;beginSTempFileName:=GetTempPathFileName;tryvJE:=CreateOleObject('JRO.JetEngine');pactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),format(SConnectionString,[STempFileName,ANewPassWord]));result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);DeleteFile(STempFileName);exceptend;end;2.ACCESS中使⽤SQL语句应注意的地⽅及⼏点技巧以下SQL语句在ACCESS XP的查询中测试通过建表:Create Table Tab1 (ID Counter,Name string,Age integer,[Date] DateTime);技巧:⾃增字段⽤ Counter 声明.字段名为关键字的字段⽤⽅括号[]括起来,数字作为字段名也可⾏.建⽴索引:下⾯的语句在Tab1的Date列上建⽴可重复索引Create Index iDate ON Tab1 ([Date]);完成后ACCESS中字段Date索引属性显⽰为 - 有(有重复).下⾯的语句在Tab1的Name列上建⽴不可重复索引Create Unique Index iName ON Tab1 (Name);完成后ACCESS中字段Name索引属性显⽰为 - 有(⽆重复).下⾯的语句删除刚才建⽴的两个索引Drop Index iDate ON Tab1;Drop Index iName ON Tab1;ACCESS与SQLSERVER中的UPDATE语句对⽐:SQLSERVER中更新多表的UPDATE语句:UPDATE Tab1SET = FROM Tab1 a,Tab2 bWHERE a.ID = b.ID;同样功能的SQL语句在ACCESS中应该是UPDATE Tab1 a,Tab2 bSET = WHERE a.ID = b.ID;即:ACCESS中的UPDATE语句没有FROM⼦句,所有引⽤的表都列在UPDATE关键字后.上例中如果Tab2可以不是⼀个表,⽽是⼀个查询,例:UPDATE Tab1 a,(Select ID,Name From Tab2) bSET = WHERE a.ID = b.ID;访问多个不同的ACCESS数据库-在SQL中使⽤In⼦句:Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;上⾯的SQL语句查询出当前数据库中Tab1和db2.mdb(当前⽂件夹中)中Tab2以ID为关联的所有记录.缺点-外部数据库不能带密码.补充:看到ugvanxk在⼀贴中的答复,可以⽤Select * from [c:\aa\a.mdb;pwd=1111].table1;ACCESS XP测试通过ACCESS⽀持⼦查询ACCESS⽀持外连接,但不包括完整外部联接,如⽀持LEFT JOIN 或 RIGHT JOIN但不⽀持FULL OUTER JOIN 或 FULL JOINACCESS中的⽇期查询注意:ACCESS中的⽇期时间分隔符是#⽽不是引号Select * From Tab1 Where [Date]>#2002-1-1#;在DELPHI中我这样⽤SQL.Add(Format('Select * From Tab1 Where [Date]>#%s#;',[DateToStr(Date)]));ACCESS中的字符串可以⽤双引号分隔,但SQLSERVER不认,所以为了迁移⽅便和兼容,建议⽤单引号作为字符串分隔符.delphi读取⼀个ACCESS数据库中的表名ADOConnection1.Close;ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ Edit1.Text + ';Persist Security Info=False';ADOConnection1.Open;ADOConnection1.GetTableNames(ComboBox1.Items);ComboBox1.ItemIndex := 0;View Codedelphi和access连接的⽅式1.SQL数据库的联接⽅式:条件:控件名:AdoConnecion1,数据库名:Sample,⽤户名:sa 密码:123,数据库地址:本机AdoConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=Sample;Data Source=.'; Adoconnection1.LoginPrompt:=False;Adoconnection1.Connected:=True;上⾯这段代码为SQL数据库的联接⽅式:最后⼀句Data Source=. 其中的“.”表⽰为数据库在本机,如果数据在其它地⽅,则将点改为IP地址或是服务器名称。
Delphi中的动态数组总结今天做的⼀个项⽬中要使⽤⼀⼤串数据进⾏处理。
如何对这⼀系列的数据进⾏保存成为⼀个⾸要的问题。
唉,Delphi啊,你何时才能⽀持泛型啊。
在C#,C++这都不是问题了啊。
在Delphi⾥只有TStringList这个容器可以使⽤,但是它是处理字符串的。
⼀进⼀出,需要⼤量的typecast时间。
⽤链表??不值得。
上⽹⼀查,呵呵,可以⽤动态数组。
看来我还是⼀个新⼿,这个东西我都不知道啊。
啥时候Delphi有了这个玩意了。
vari:array of integer;beginSetLength(i,length);//设置动态数组的长度以后就可以像正常数组那样操作有了动态数组就可以随时设置数组的⼤⼩,不会像以前那样事先定义数组的⼤⼩,对资源造成浪费。
动态数组的本质还是指针,上⾯的例⼦。
i 就是⼀个指针类型。
可以将两个动态数组之间进⾏引⽤赋值,当然了我们也可以将其复制给⼀个Pointer,只不过意义不⼤罢了。
varp:Pointer;i,j:Array of integer;beginSetLength(i,20);//分配内存空间i[0] := 22;i := j;//此时,i,j都同时指向了那段动态数组的存p := i; //没有实际意义,只是证明了i 是指针类型//释放⼯作end;使⽤完了内存当然需要释放了,否则会造成内存泄露。
动态数组使⽤了 reference-counting 技术,所以在使⽤完后,只需将其赋值为nil即可。
-------------------------------------------------------------------⾃从有了动态数组,链表除了在教科书⾥出现外,已经很少在实际编程中被使⽤了,事实也是如此,数组的确⽐传统链表快得多,⽽且也⽅便的多。
从 Delphi4起,开始了内建各种类型的动态数组⽀持。
但是,对我们来说动态数组⽀持似乎做的不够彻底,因为Delphi竟然连删除、插⼊、移动连续元素的函数都没有提供,让⼈使⽤起来总觉得不够爽!!! J 。
Delphi-基础(常量、集合、数组[动态数组、多维数组])⼀、常量 1、常量定义:⼀开始定义好的值,以后在程序的运⾏过程中不允许改变1const2 Pi : Double = 3.141592; //定义为常量3{常量的定义⽅式,可以不进⾏类型的声明,编译器会根据具体值决定常量的的类型}4 Pi2 = 3.1415;2、常量使⽤ 枚举:常量集 type 枚举名=(标识符1,标识符2,标识符3,......)1type2{正常情况下,枚举类型的索引是从0开始}3 EColors = (RED,GREEN,BLUE);4 EWeek = (SUN=7,MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6);5var6 Color : EColors;7 Week : EWeek;89begin10 Color := EColors.RED;11 Week := EWeek.SUN;12 Writeln(Ord(Color),',',Ord(Week));13 REDln;14end.⼆、⼦界 使⽤:为了防治出现越界 注意事项: 1、⼦界要求上界和下界必须是有序的数据类型整数、字符、枚举 2、⼦界的上界⼤于或者等于下界 格式:type ⼦界1{定义格式}2type3{枚举}4 EColors = (RED,GREEN,BLUE);5{⼦界}6 TSubBoundNumber = 1..10;7 TSubBoundChar = 'a'..'z';8910begin11 Writeln(Low(TSubBoundNumber)); //下界12 Writeln(High(TSubBoundChar)); //上界13 REDln;14end.打印出闰年还是平年,每个⽉的天数和所属季节1{打印出闰年还是平年,每个⽉的天数和所属季节}2type3{⼦界}4 TSubBoundMonths = 1..12;5{枚举}6 ESeason = (Spring,Summer,Autumn,Winter);78var9 Season : ESeason;1415procedure SubBound();16begin17 Writeln('请输⼊⼀个年份:');18 REDln(User_Year);19{默认为闰年}20 Is_Leap_Year := True;21while Is_Leap_Year do22begin23if (User_Year mod4) = 0then begin24if not((User_Year mod100) = 0) then begin25 Writeln('闰年',User_Year);26 Is_Leap_Year := False;27end;28end;29if (User_Year mod400) = 0then begin30 Writeln('闰年',User_Year);31 Is_Leap_Year := False;32end33else begin34 Is_Leap_Year := False;35 Writeln('平年',User_Year)3637end;38end;3940end;41procedure Months();42begin43{季节}44 Writeln('请输⼊⼀个⽉份:');45 REDln(User_Month);46begin47if (User_Month >= Low(TSubBoundMonths)) and (User_Month <= High(TSubBoundMonths)) then48if (User_Month >= 1) and (User_Month <= 3) then begin49 Writeln('当前季节为春季');50case User_Month of511 : begin52 Writeln('31天');53end;542 : begin55if Is_Leap_Year then begin56 Writeln('29天');57end else begin58 Writeln('28天');59end;60end;613 : begin62 Writeln('31天');63end;64end;65end;6667end;68end;6970begin71// Writeln(Low(TSubBoundNumber)); //下界72// Writeln(High(TSubBoundChar)); //上界7374 SubBound();75 Months();76 REDln;77end.View Code三、集合集合是由具有某些共同特征的元素结构的⼀个整体。
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 各个版本历史。
-------------------toolButton属性------------------------------------------align 设置组件对齐(同其父容器)方式alignmentallowAllupBiDiModeborderstyle 设置组件边框形状caption 设置组件标题ctl3d 设置组件边框是否为3D模式,若borderstyle设置为bsnone则此属性无效color 设定组件背景色彩cursor 设定鼠标经由组件时间标所显示的外形disabledindexdowndowmIndexdragcursordragKingddragModedropDownMenu 鼠标点击(弹出式)快捷菜单popupmenu 设定鼠标右键(弹出式)快捷菜单enabled 设定组件是否能使用,当设为false时组件会呈灰色font 设定组件内文字的字型、字体大小、颜色等guoupIndexheight 设定组件高度helpContexthelpKeywordhelpTypehelpcontent 用来为辅助说明文件中的索引值建破关系hinthotIndeximageInedx 在图片集合中所添加图片的idimages 图片集合layout 布局left 设定组件与父组件左边框间的距离parentBiDiModeparentFontparentShowHintselectionColorStar 渐变开始颜色selectionColorStop 渐变结束颜色selectFrameColor 渐变框架颜色gradientColorStyle 颜色渐变风格gcsMSOffice不显示渐变格gcsCustom显示渐变风格showCaption 显示caption内容showHinttagtaborder 设定组件在按下TAB键后焦点(focus)挪动的次序tabstop 若设为FALSE,性用品批发,则按TAB键后焦点并不会在此组件上停留top 设定组件与父组件上边框间的距离toolStyle 显示风格为button or dropDowmtuansparentuseToolbarButtonLayoutuseToolbarButtonSizeuseToolbarShowCaptionuseToolbarVisualStylevisible 设定组件是否可见,此属性只在履行时起作用visualStyle 按钮显示风格(是否显示按钮边框)width 设定组件显示宽度==========================toolbutton事件========================================actiondropDownMenu鼠标点击弹出下拉列表popupMenu 设定鼠标右键(弹出式)快捷菜单conchange 当组件有所转变时触发的事件onclick 当在此组件上按下鼠标左键时触发的事件onContextPopuponDragDroponDragOveronDropDownondblclick 当在此组件上双击鼠标左键时触发的事件onenter 当焦点进入此组件时触发的事件onEndDockonEndDragonexit 当切换到其它组件使该组件失去焦点时触发的事件,但当切换到另一窗体或另一利用程序时此事件不会触发onkeydown 当在拥有焦点的组件上按下某个键时触发的事件,按键包括所有的英文、数字键、方向键、功效键等onkeypress 当在领有焦点的组件上按下某个键时触发的事件,但按键只包含所有的英文、数字键、TAB、BACKSPACE、ENTER、ESConkeyup 当使用者放开键盘上的按键时触发的事件,按键看ONKEYDOWNonmousedown 当鼠标键在某个组件按下时触发的事件(其参数包括哪个鼠标键被按下、是否有特别键(CTRL、ALT、SHIFT)被按下以及鼠标当前的坐标)onmousemove 当鼠标在组件内移动时触发的事件onmouseup 当鼠标键在组件上方放开时所触发的事件onMouseEnteronMouseLeaveonstarDockonStarDragonpaint 在组件须要被重画时触发的事件,此时可进行自定义画法--------------------------窗体组件---------------------------------窗体组件(FORM)常见属性及事件active 指示此窗体是否占有focusactivecontrol 指示窗体中目前拥有focus的组件activemdichild 指示主窗体中目前拥有focus的子窗体activeolecontrol 用于取得或设定此窗体上的OLE节制,以响应FOCUS改变bordericons 指定哪些icon显示在窗体的title bar上bordersytle 用以指定窗体border外观及行为canvas 提供使用者可在窗体上client内自行显示的画板,普通在onpaint事件中使用clienthandle 提供可存取体系内部使用的mdi client window handleclientheight 窗体客户区高度clientrect 窗体客户区所对应的矩形clentwidth 窗体客户区宽度defaultmonitor 指定此窗体所显示的预设的显示器,用于多显示器环境下designer 此窗体的设计界面,男性自慰,个别不必用户设定droptarger 用以指定窗体是否为目前drag and drop动作的目的floating 用以指示此窗体是否正在停泊在另一个视窗内formstate 用于指示此窗体所处状态formstyle 用于唆使窗体的款式helpfile 用于指定HELP文件icon 指定窗体最小化时所显示的iconkeyprevive 指定此窗体是否需在目前的active组件之前取得键盘输入mdichildcount 用于取得子窗体数目mdichildren 用于取得子窗体(数组)menu 用于指定窗体主菜单modalresult 当窗体作用为MODAL对话框时,作为对话框的后果monitor 用于指示窗体所显示的显示器oldcreateorder 指定oncreate和ondestroy事件何时发生oleformobject 对包含在此窗体内的OLE对象指定OLEFORM界面parent 设定此窗体的parentPARENTBIDIMODE 指定是否此窗体应用PARENT的BIDIMODE PIXELSPERINCH 表示此窗体设计时系统上字形的比例POSITION 表示此窗体的大小及位置PRINTSCALE 表示此窗体打印的比例SCALED 用于指定窗体的大小是否根据PIXELSPERINTCH属性来指定TILEMODE 用于指定TILE办法被调用时子窗体如何排列VISIBLE 用于设定此窗体是否被显示WINDOWMENU 假如窗体是一个MDI PARENT窗体,似乎是针对我而说的,用于指定视窗的菜单WINDOWSTA TE 用于指定窗体如何显示于屏幕中事件阐明ONPAINT 当窗体必需重画时发生ONHELP 当窗体收到HELP恳求时发生ONDRAGDROP 当一个对象拉进此窗体并丢下时发生ONDRAGOVER 当一个对象拉进此窗体时发生ONCONSTRAINEDRESIZE 在ONCANRESIZE事件发生后发生ONCANRESIZE 当打算改变窗体尺寸时确认是否改变ONRESIZE 当窗体尺寸改变时发生ONSTARTDOCK 当对象开始停泊时发生ONENDDOCK 当对象停泊停止时发生ONUNDOCK 当窗体解除停泊时发生ONDOCKDROP 当其它窗体停泊到此组件时发生ONDOCKOVER 当其它窗体向此组件停泊濒临时发生ONGETSITEINFO 当有关停泊新闻传回此窗体时发生ONCREATE 当窗体创立时产生ONCLOSE 当窗体行将封闭时发生ONCLOSEQUERY 在窗体即将关闭时确认是否真的关闭窗体ONDESTROY 当窗体开释时发生ONSHOW 当窗体显示时发生ONHIDE 当窗体暗藏时发生ONACTIVATE 当窗体取得FOCUS时发生ONDEACTIV A TE 当窗体失去FOCUS时发生菜单组件(MAINMENU、POPUPMENU)常见属性属性说明AUTOMERGE 用于指定主窗体的主菜单是否与其它的窗体主菜单合并HANDLE 主菜单的视窗代码BIDIMODE 用于指定选项名是由左至右读或由右至左读IMAGES 用于指定选项旁可显示的图像内容ITEMS 选项的内容OWNERDRAW 用于指定选否是否可自行显示PARENTBIDIMODE 用于指定是否继续父控件的BIDIMODE属性WINDOWHANDLE 使用此菜单的视窗代号菜单项属性说明ACTION 用于指定此选项对应的动作BITMAP 用于指定在此选项旁的图像内容BREAK 用于指定是否从此选项开端树立新的分栏CAPTION 选项显示的名称CHECKED 用于指定此选项是否CHECKEDCOMMAND 用于指定选项对应的WINDOWS COMMAND ID COUNT 用于指示此选项的子选项数目DEFAULT 用于指示此选项是否为子菜单的预设项目EANBLED 用于指示此选项是否可用GROUPINDEX 用于指定此选项所隶属的逻辑群组,以掌握主菜单之间的合并或单选钮互斥的效果HANDLE 对应此选项的DROP-DOWN菜单的WINDOWS MENU HANDLEHELPCONTEXT 对应此选项的HELP CONTEXT IDHINT 用于设定鼠标移入选项范围时的提醒信息IMAGEINDEX 用以指定哪个图像显示于选项旁ITEMS 此选项的子菜单项目数MENUINDEX 此选项的父菜单内的选项索引值PARENT 此选项的父菜单的选项RADIOITEM 用于设定此选项是否与同组其它选项互斥SHORTCUT 用于设定此选项的快捷键VISIBLE 用于设定此选项是否可见标签(LABEL)常用属性:属性说明ALIGNMENT 用于设定标签内文本的对齐方式(程度方向)AUTOSIZE 用于设定标签组件是否依据组件内文本自动调整大小FOCUSCONTROL 用于设定键入标签内快捷键后应接收FOCUS的组件LAYOUT 用于设定标签文本如何放置(垂直方向)SHOW ACCELCHAR 用于设定是否容许标签内文本是否显示画有下划线的快捷键值TRANSPARENT 用于设定组件是否透明WORDWRAP 用于设定组件文本宽于组件宽度时是否自动换行编辑框(EDIT、MASKEDIT)的属性:属性说明AUTOSELECT 用于设定组件失掉FOCUS后是否自动选取所有文本AUTOSIZE 用于设定组件内增长输入文字时,是否自动加长组件长度BORDERSTYLE 用于设定组件边框风格CANUNDO 用于设定组件内文本是否可UNDOCHARCASE 用于设定组件内文本大小写状态HIDESELECTION 用于设定组件失去FOCUS时,选取文本是否有效MAXLENGTH 用于设定组件内输入文本的最大长度MODIFIED 可用于判断组件内文本是否发生更改OEMCONVERT 决定是否将编辑框内文字ASCII码转换成OEM,再由OEM转换为ASCIIPASSWORDCHAR 设定密码输入时代替的字符READONL Y 设定编辑框内容是否可修正SELLENGTH 指示编辑框内选定文本长度SELSTART 指示编辑框内选定文本的起始位置SELTEXT 指示编辑框内选定文本EDITMASK 指导MASKEDIT掩码字符串按钮(BUTTON、BITBTN、SPEED BUTTON)常见属性:一般BUTTON属性说明CANCEL 设定此按钮是否为取消钮(撤消钮即在程序执行时若按ESC键可执行此按钮的单击事件)DEFAULT 指按下ENTER键后是否执行此按的单击事件MODALRESULT 通常用于对话框窗体中,当按下此钮时,小妞,给大爷笑一个,不笑,那大爷给你笑一个,此属性值即成为此按钮附属的MODAL窗体的MODALRESULTCAPTION 设定或取得此按钮上显示的题目BITBTN属性说明(图情势按钮)GL YPH 用以设定此按钮上呈现的图像KIND 用以指定按钮的类型LAYOUT 用以设定图像在按钮上显示的地位MARGIN 用以设定按钮边与图像边之间的间隔(以象素为单位)NUMGL YPHS 用以设定按钮图像的数目SPACION 用以设定图像与文本之间的距离(以象素为单位)STYLE 用以设定按钮外观SPEED BUTTON属性说明(疾速按钮)ALLOWALLUP 用以设定是否包括此倏地钮的组中是否能同时坚持UP状态DOWN 用以设定此快速钮是否已被选取FLAT 用以设定此快速钮是否显示3D边的效果GROUPINDEX 用以设定快捷钮的组TRANSPARENT 用以设定快速钮是否透明备注组件(MEMO)的常见属性和事件:属性说明LINES 用于取得组件中文本(为数组,,因此可支撑取单行文本)TEXT 用于获得组件中文本(字符串)READONL Y 用于设定组件文本是否可修改SCROLLBARS 用于设定组件滚动条模式W ANTRETURNS 用于设定输入的ENTER键是否作为文本内容WORDWRAP 用于设定文本是否主动换行SELSTART 指示选中文本的起始位置SELLENGTH 指示选中文本的长度W ANTTABS 用于设定输入的TAB键是否作为文本内容SELTEXT 指示选中文本事件说明在当前行增加一行文本在末追加一行文本在指定位置增添一行文本删除指定行文本从指定文件导入文本到组件从指定流导入文本到组件将组件文本存为指定文件将组件文本存为指定流肃清组件所有文本将选定文本剪切到剪贴板将选定文本复制到剪贴板从剪贴板粘贴文本到当前位置复选框(CHECKBOX)常见属性:属性说明ALIGNMENT 设定复选框标题位置ALLOWGRAYED 决定复选框是否存在GRAYED状态CHECKED 决议复选框状况STATE 指示复选框状态单选按钮(RADIOBUTTON)常见属性:(供给互斥选项,因而通常用于成组实现,可用GROUPBOX或RADIOGROUP实现)属性说明ALIGNMENT 设定单选框标题位置CHECKED 决定单选框状态组框(GROUPBOX)常见属性:(用于作容器)属性说明CAPTION 组框标题,通常用于指示组件用处单选分组框(RADIOGROUP)常见属性:属性说明CAPTION 指示单选组合名称COLUMNS 指示单选按钮又单行或多行动单位显示ITEMS 单选按钮标题内容(以行为单位)ITEMINDEX 指示当前选定的单选按钮的索引值列表框(LISTBOX)常见属性:属性说明CANV AS 提供自定义显示列表框项目内容的画板,用于ONDRAWITEM事件COLUMNS 设定多重列列表框的列数EXTENDEDSELECT 指定是否可使用SHIFT键进行连选ITEMHEIGHT 设定列表框项目标高度ITEMINDEX 指定选取的项目的索引值ITEMS 项目的字符串内容MULTISELECT 设定是否允很多重选取SELCOUNT 列表框当选定项目数目SELECTED 指示某个项目是否被选取SORTED 指定列表框中项目睹者是否按字母顺序排序STYLE 指示列表框显示模式TOPINDEX 指示列表框顶端名目的索引值组合框(COMBOBOX)常见属性:属性说明CANV AS 提供自定义显示组合框项目内容的画板,用于ONDRAWITEM事件CHARCASE 设定组合框内文字字母大小写状况DROPDOWNCOUNT 设定组合框下拦菜单最大显示项目个数DROPPEDDOWN 用于断定组合框是否处于下拉菜单的状态ITEMINDEX 指示下拉菜单中目前被选取的项目的索引值ITEMS 下拉菜单项目内容MAXLENGTH 设定组合框中编纂局部可输入的字符最大个数SELLENGTH 指示组合框编辑部分被选取文本长度SELTEXT 指示组合框中编辑部门被选取文本SELSTART 指示组合框中编辑部分被选取文本起始位置STYLE 指示组合框显示模式滚动条(SCROLLBAR)常见属性:属性解释MAX 指示滚动条最大值MIN 指示转动条最小值POSITION 指示滑动块当前位置LARGECHANGE 指示鼠标按滚动条框至滑动块之间区域时移动值SMALLCHANGE 指示鼠标按下滚动条两端箭头时移动值KIND 指示滚动条类型(水平型或垂直型)PAGESIZE 指示按下PAGEUP或PAGEDOWN时变更量图像框组件(IMAGE)常见属性:属性说明AUTOSIZE 本组件是否调整成为与读取图像等同大小INCREMENTALDISPAL Y 读较大型图像文件时是否逐渐显示PICTURE 指向图像文件对象,能常为文件名STRETCH 是否将图像自动调整为本组件预设大小图像列表框(IMAGELIST)常见属性:属性说明BKCOLOR 指定背景颜色BLENDCOLOR 远景混杂颜色COUNT 组件中图像个数DRAWINGSTYLE 指示本组件绘出图像时采取的方法HEIGHT 组件内各图像的高度值IMAGETYPE 绘制图像时是否加上MASK图像MASKED 设定是否可以加上MASKWIDTH 组件内各图像的宽度值工具栏组件(TOOLBAR)常见属性:属性说明AUTOSIZE 设定工具栏是否自动调整大小以容纳BAND BUTTONCOUNT 工具栏中按钮个数BUTTONHEIGHT 工具栏中的按钮高度BUTTONS 以INDEX表现在工具栏中的按钮BUTTONWIDTH 工具栏中的按钮宽度DISABLEDIMAGES 当工具按钮DISABLED时显示的图像列表FLAT 是否设定浮出效果HOTIMAGES 当鼠标指向工具栏按钮时显示的图像列表IMAGES 提供显示在工具栏按钮上的图像列表INDENT 设定工具栏左侧距离大小LIST 设定标题文字是否显示在图形的右方ROWCOUNT 指定工具栏的行数SHOWCAPTIONS 设定工具按钮是否显示文字W ARPABLE 设定工具栏排列按钮时是否自动换行TOOLBUTTON属性说明ALLOWALLUP 设定同组工具按钮是否能够都未被选取DOWN 设定按钮是否可停在被按下的状态DROPDOWNMENU 当工具按钮按下时所涌现的菜单GROUPED 设定同组工具按钮IMAGEINDEX 关联的图像在图像列表框中的索引值INDETERMINA TE 是否提供工具栏第三种情形MARKED 设定按钮是否有暗影STYLE 设定按钮样式WRAP 设定在此工具按钮新增者是否为另一新栏酷栏(COOLBAR)常见属性:属性说明ALIGN 设定COOLBAR的对齐方式AUTOSIZE 设定酷栏是否自动调整大小以包容BAND BANDBORDERSTYLE 设定BAND的边界作风BANDS 显示COOLBAR内所有的BANDBITMAP 设定BAND的背景图像FIXEDORDER 设定是否可自行调整BAND的顺序FIXEDSIZE 设定是否以单一设度限定酷栏内所有的BAND IMAGES 提供BANDS所需要的图像SHOWTEXT 设定BAND是否显示文字VERTICAL 设定BAND的排列方式(水平排列或垂直排列)DOCKSITE 是否许可停泊状态栏组件(STA TUSBAR)常见属性:属性说明PANELS 设定状态栏组件区域SIMPLEPANEL 设定状态栏单个区域SIMPLETEXT 设定状态栏单个区域的文本ALIGNMENT 设定区域文本对齐方式TEXT 设定区域显示文本WIDTH 设定区域宽度进度条组件(PROGRESSBAR)常见属性跟事件:属性说明MAX 设定POSITION最大值MIN 设定POSITION最小值ORIENTATION 设定组件显示的方向POSITION 设定进度条当前位置SMOOTH 设定进度条的进度指针为平滑或距离方式STEP 设定调用STEPIT方式时所增加的量事件说明STEPBY(INTEGER)进度条增加值(由参数指定增量)STEPIT 进度条增加值(由STEP属性指定增量)轨迹条组件(TRACKBAR)常见属性:属性说明FRQUENCY 设定本把持刻度间的间隔值LINESIZE 设定按方向键时移动量MAX 设定POSITION最大值MIN 设定POSITION最小值ORIENTATION 设定本组件显示的方向PAGESIZE 设定PAGEUP或PAGEDOWN的移动量POSITION 设定本组件当前位置SELEND 设定选定范畴的最后位置SELSTART 设定选定规模的开始位置SLIDERVISIBLE 设定本组件中滑块是否显示TICKMARKS 设定刻度显示的方向位置TICKSTYLE 设定组件刻度记号的配置方式多页标签(PAGECONTROL)常见属性属性说明MULTILINE 设定组件是否依标签数量自定调剂行数ACTIVEPAGE 当前组件选中标签TABPOSITION 设定组件标签所有位置STYLE 设定组件标签样式CAPTION 设定指定标签标题PAGEINDEX 指示标签的位置TABVISIBLE 设定指定标签是否显示。
一套Delphi的笔试题二二.是非题(共20道)1.从主菜单上选择Project|Syntax Check 菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。
()2.Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。
()3.粘贴时,如果作为容器的组件已被选择,剪贴板中的组件会当作容器组件的子组件来粘贴()4.在由Delphi 管理的窗体类声明段中加进任何代码都会引起程序出错。
()5.Delphi可以在一个报表中使用一个以上的明细区( )6.Delphi可以象其它开发工具一样使用传统的资源,比如菜单可以作为资源加载,以利于实现多国语言环境。
( )7.创建组件时可以定义属性的缺省值,但字符串属性不能有缺省值。
( )8.声明一个常量后,在程序中则不可以改变这个常量的值。
( )9.构造子必须通过类的一个有效实例来激活。
( )10.在设计阶段Object Inspector显示被选组件的所有属性。
( )11.在Delphi IDE中,按住Shift键,同时单击Components Palette上的组件图标,可以在窗体内放置多个同类组件。
()12.为减少编程中的错误,用户可以使用Delphi提供的系统函数IsValidIdent检验字符串是否合法。
()13.用户如果不在一个完整的事件响应过程添加任何代码,当保存或编译该项目时,该过程将被自动清除。
()14.使用Runtime Packages技术可以将原先独立的可执行文件分解为动态链接库加上小的可执行文件,这样作的好处是所占磁盘空间比一个独立的可执行文件小。
( )15.Delphi和VB一样不能产生真正的可执行代码(本机代码),但是Delphi开发的程序比VB的运行速度快。
( )16.大多数组件的属性可以在运行时改变,而且,有些只能在运行时刻改变。
()17.对于用户的Delphi工程中创建的窗体及其组件的属性都保存在一个独立的描述文件,即扩展名为DSK 的文件中。
2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧!C++中的模板、C#等语言中泛型技术,给许多操作不同类型数据的软件人员提供了一个很好的方法。
其类型的“可变”性,让许多用过的软件人员所心喜。
但是在Delphi 2009以前的版本中,是从来没有的。
让许多不会用Delphi中TList的人员,大大的抱怨。
如果用好Delphi 中TList,其可用性,我个人认为,比其它语言中的泛型好用很多(当然对指针的应用和内存的分配、释放不了解的人除外)。
自从Delphi 2009的发布,给许多喜欢用泛型技术的软件人员,提供了方便。
由于Delphi 2009不太稳定,也没有过多的去用其泛型技术。
Delphi 2010发布以来,出现许多“Delphi 2010初体验,是时候抛弃Delphi 7了”的话语的满天飞,让我想一看其究竟。
闲话少说,Delphi 2010的泛型单元Generics.Defaults、Generics.Collections;重点还是Generics.Collections单元,其中有TArray泛型类、TList(列表的泛型)、TQueue(队列的泛型)、TStack(栈的泛型)、TDictionary (Hash Table哈希表的泛型)及其上述泛型所对应的TObject的泛型,非常广泛。
简单的泛型类应用:(转) -----------------------------------------------------------------------------------------------unit Unit1; interface uses Windows, Messages, SysUtils, V ariants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); end; var Form1: TForm1; implementation{$R *.dfm}uses Generics.Collections; {Delphi 泛型容器单元}var Dictionary: TDictionary; {定义一个泛型TDictionary 类, 指定有Cardinal、string 构成}{建立}procedure TForm1.FormCreate(Sender: TObject); begin Dictionary := TDictionary.Create; Memo1.Clear; Button1.Caption := Button1.Caption + ' 添加'; Button2.Caption := Button2.Caption + ' 删除'; Button3.Caption := Button3.Caption + ' 尝试取值'; Button4.Caption := Button4.Caption + ' 清空'; Edit1.Clear; Edit2.Clear; Edit1.NumbersOnly := True; end; {释放}procedure TForm1.FormDestroy(Sender: TObject); begin Dictionary.Free; end; {添加}procedure TForm1.Button1Click(Sender: TObject); var key: Cardinal; value: string; str: string; k,v: Boolean; begin key := StrToIntDef(Edit1.Text, 0); value := Edit2.Text; if value = '' then value := 'Null'; k := Dictionary.Contains Key(key); {Key 是否存在}v := Dictionary.ContainsV alue(value); {V alue 是否存在}if not k then begin Dictionary.Add(key, value); Memo1.Lines.Add(Format('%d=%s', [key, value])); {同步显示}end; if k and not v then begin str := Format('key 已存在: %d=%s; 是否修改其值?', [key, Dictionary[key]]); if MessageBox(0, PChar(str), '提示', MB_OKCANCEL or MB_ICONQUESTION) = mrOk then begin//Dictionary[key] := value; {Dictionary[key] = Dictionary.Item[key]} Dictionary.AddOrSetV alue(key, value); {也可使用上一句} Memo1.Lines.V alues[IntToStr(key)] := value; {同步显示}end; end; if k and v then begin str := Format('%d=%s 已存在, 不能重复添加', [key, value]); MessageBox(0, PChar(str), '错误', MB_OK + MB_ICONHAND); end; Text := IntToStr(Dictionary.Count); end; {删除: Remove} procedure TForm1.Button2Click(Sender: TObject); var key: Integer; i: Integer; begin key :=StrToIntDef(Edit1.Text, 0); if not Dictionary.ContainsKey(key) then begin ShowMessageFmt('key: %d 不存在', [key]); Exit; end; Dictionary.Remove(key); Text := IntToStr(Dictionary.Count); {同步显示} i := Memo1.Lines.IndexOfName(IntToStr(key)); if i > -1 then Memo1.Lines.Delete(i); end; {尝试取值: TryGetV alue}procedure TForm1.Button3Click(Sender: TObject); var key: Integer; value: string; begin key := StrToIntDef(Edit1.Text, 0); if Dictionary.TryGetV alue(key, value) then ShowMessageFmt('key: %d 已存在, 其值是: %s', [key, value]) else ShowMessageFmt('key: %d 不存在', [key]) end; {清空: Clear}procedure TForm1.Button4Click(Sender: TObject); begin Dictionary.Clear; Text := IntToStr(Dictionary.Count); Memo1.Clear; {同步显示}end; end. -------------------------------------------------------------------------------- 自定义泛型应用:(转) -------------------------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, V ariants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); end; var Form1: TForm1; implementation{$R *.dfm}type TArr= array[0..9] of T; {定义一个泛型数组} {虽然大家习惯用T 来泛指其他类型, 但使用其他合法的标识符也是可以的}{用作Integer} procedure TForm1.Button1Click(Sender: TObject); var Arr: TArr; i: Integer; begin for i := Low(Arr) to High(Arr) do Arr[i] := i * i; Memo1.Clear; for i := Low(Arr) to High(Arr) do Memo1.Lines.Add(Format('Arr[%d] = %d', [i, Arr[i]])); end; {用作string}procedure TForm1.Button2Click(Sender: TObject); var Arr: TArr; i: Integer; begin for i := Low(Arr) to High(Arr) do Arr[i] := StringOfChar(Char(i+97), 3); Memo1.Clear; for i := Low(Arr) to High(Arr) do Memo1.Lines.Add(Format('Arr[%d] = %s', [i, Arr[i]])); end; {用作Single}procedure TForm1.Button3Click(Sender: TObject); var Arr: TArr; i: Integer; begin for i := Low(Arr) to High(Arr) do Arr[i] := 100/ (i+1); Memo1.Clear; for i := Low(Arr) to High(Arr) do Memo1.Lines.Add(Format('Arr[%d] = %f', [i, Arr[i]])); end; {用作记录TPoint}procedure TForm1.Button4Click(Sender: TObject); var Arr: TArr; i: Integer; begin for i := Low(Arr) to High(Arr) do Arr[i] := Point(i, i*2); Memo1.Clear; for i:= Low(Arr) to High(Arr) do Memo1.Lines.Add(Format('Arr[%d] = (%d,%d)', [i, Arr[i].X, Arr[i].Y])); end; {用作类TButton} procedure TForm1.Button5Click(Sender: TObject); var Arr: TArr; i: Integer; begin for i := Low(Arr) to High(Arr) do begin Arr[i] := TButton.Create(Self); Arr[i].Name := Concat('Btn', IntToStr(i+1)); end; Memo1.Clear; for i := Low(Arr) to High(Arr) do Memo1.Lines.Add(Format('Arr[%d] is %s', [i, Arr[i].Name])); end; end.一、概述等了几百年,Delphi终于原生的支持泛型了。
目录TForm Class (1)TPanel组件 (4)TToolBar Class (5)TToolButton Class (7)TTimer Class (7)TADOConnection Class (8)TADOQuery Class (9)TADODataSet Class (9)TDBGrid Class (10)TADOStoredProc Class (11)TButton Class (11)TBitBtn Class (12)TComboBox Class (12)TStaticText Class (13)TLabel Class (13)TEdit Class (13)TGroupBox Class (13)TRadioGroup Class (13)TListbox Class (14)TTreeView Class (14)TDataModule Class (15)VC++使用串口 (15)I. Open (16)II. Configuration (17)III. Read (18)IV. Write (19)V. Close (20)Conclusion ............................................................................................................................................. 错误!未定义书签。
License ................................................................................................................................................... 错误!未定义书签。
DELPHI Button控件常见属性说明:ALIGN设置组件对齐(同其父容器)方式BORDERSTYLE设置组件边框形状CAPTION设置组件标题CTL3D设置组件边框是否为3D模式,若BORDERSTYLE设置为BSNONE 则此属性无效COLOR设定组件背景颜色CURSOR设定鼠标经过组件时光标所显示的形状ENABLED设定组件是否能使用,当设为FALSE时组件会呈灰色FONT设定组件内文字的字型、字体大小、颜色等HEIGHT设定组件高度HELPCONTENT用来为帮助说明文件中的索引值建立关联LEFT设定组件与父组件左边框间的距离POPUPMENU设定鼠标右键(弹出式)快捷菜单TABORDER设定组件在按下TAB键后焦点(FOCUS)移动的顺序TABSTOP若设为FALSE,则按TAB键后焦点并不会在此组件上停留TOP设定组件与父组件上边框间的距离VISIBLE设定组件是否可见,此属性只在执行时起作用WIDTH设定组件显示宽度DELPHI常见事件说明:ONCHANGE当组件有所改变时触发的事件ONCLICK当在此组件上按下鼠标左键时触发的事件ONDBLCLICK当在此组件上双击鼠标左键时触发的事件ONENTER当焦点进入此组件时触发的事件ONEXIT当切换到其它组件使该组件失去焦点时触发的事件,但当切换到另一窗体或另一应用程序时此事件不会触发ONKEYDOWN当在拥有焦点的组件上按下某个键时触发的事件,按键包括所有的英文、数字键、方向键、功能键等ONKEYPRESS当在拥有焦点的组件上按下某个键时触发的事件,但按键只包括所有的英文、数字键、TAB、BACKSPACE、ENTER、ESCONKEYUP当使用者放开键盘上的按键时触发的事件,按键看ONKEYDOWN ONMOUSEDOWN当鼠标键在某个组件按下时触发的事件(其参数包括哪个鼠标键被按下、是否有特殊键(CTRL、ALT、SHIFT)被按下以及鼠标当前的坐标)ONMOUSEMOVE当鼠标在组件内移动时触发的事件ONMOUSEUP当鼠标键在组件上方放开时所触发的事件ONPAINT在组件需要被重画时触发的事件,此时可进行自定义画法窗体组件(FORM)常见属性及事件属性说明ACTIVE指示此窗体是否拥有FOCUSACTIVECONTROL指示窗体中目前拥有FOCUS的组件ACTIVEMDICHILD指示主窗体中目前拥有FOCUS的子窗体ACTIVEOLECONTROL用于取得或设定此窗体上的OLE控制,以响应FOCUS 改变BORDERICONS指定哪些ICON显示在窗体的TITLE BAR上BORDERSYTLE用以指定窗体BORDER外观及行为CANVAS提供使用者可在窗体上CLIENT内自行显示的画板,一般在ONPAINT 事件中使用CLIENTHANDLE提供可存取系统内部使用的MDI CLIENT WINDOW HANDLECLIENTHEIGHT窗体客户区高度CLIENTRECT窗体客户区所对应的矩形CLIENTWIDTH窗体客户区宽度DEFAULTMONITOR指定此窗体所显示的预设的显示器,用于多显示器环境下DESIGNER此窗体的设计界面,一般不用用户设定DropTARGET用以指定窗体是否为目前DRAG AND Drop动作的目标FLOATING用以指示此窗体是否正在停泊在另一个视窗内FORMSTATE用于指示此窗体所处状态FORMSTYLE用于指示窗体的样式HELPFILE用于指定HELP文件ICON指定窗体最小化时所显示的ICONKEYPREVIEW指定此窗体是否需在目前的ACTIVE组件之前取得键盘输入MDICHILDCOUNT用于取得子窗体数目MDICHILDREN用于取得子窗体(数组)MENU用于指定窗体主菜单MODALRESULT当窗体作用为MODAL对话框时,作为对话框的效果MONITOR用于指示窗体所显示的显示器OLDCreateORDER指定ONCreate和ONDESTROY事件何时发生OLEFORMOBJECT对包含在此窗体内的OLE对象指定OLEFORM界面PARENT设定此窗体的PARENTPARENTBIDIMODE指定是否此窗体使用PARENT的BIDIMODE PIXELSPERINCH表示此窗体设计时系统上字形的比例POSITION表示此窗体的大小及位置PRINTSCALE表示此窗体打印的比例SCALED用于指定窗体的大小是否依据PIXELSPERINTCH属性来指定TILEMODE用于指定TILE方法被调用时子窗体如何排列VISIBLE用于设定此窗体是否被显示WINDOWMENU如果窗体是一个MDI PARENT窗体,用于指定视窗的菜单WINDOWSTATE用于指定窗体如何显示于屏幕中事件说明ONPAINT当窗体必须重画时发生ONHELP当窗体收到HELP请求时发生ONDRAGDrop当一个对象拉进此窗体并丢下时发生ONDRAGOVER当一个对象拉进此窗体时发生ONCONSTRAINEDRESIZE在ONCANRESIZE事件发生后发生ONCANRESIZE当企图改变窗体尺寸时确认是否改变ONRESIZE当窗体尺寸改变时发生ONSTARTDOCK当对象开始停泊时发生ONENDDOCK当对象停泊结束时发生ONUNDOCK当窗体解除停泊时发生ONDOCKDrop当其它窗体停泊到此组件时发生ONDOCKOVER当其它窗体向此组件停泊接近时发生ONGETSITEINFO当有关停泊消息传回此窗体时发生ONCreate当窗体创建时发生ONCLOSE当窗体即将关闭时发生ONCLOSEQUERY在窗体即将关闭时确认是否真的关闭窗体ONDESTROY当窗体释放时发生ONSHOW当窗体显示时发生ONHIDE当窗体隐藏时发生ONACTIVATE当窗体获得FOCUS时发生ONDEACTIVATE当窗体失去FOCUS时发生菜单组件(MAINMENU、POPUPMENU)常见属性属性说明AUTOMERGE用于指定主窗体的主菜单是否与其它的窗体主菜单合并HANDLE主菜单的视窗代码BIDIMODE用于指定选项名是由左至右读或由右至左读IMAGES用于指定选项旁可显示的图像内容ITEMS选项的内容OWNERDRAW用于指定选否是否可自行显示PARENTBIDIMODE用于指定是否继承父控件的BIDIMODE属性WINDOWHANDLE使用此菜单的视窗代号菜单项属性说明ACTION用于指定此选项对应的动作BITMAP用于指定在此选项旁的图像内容BREAK用于指定是否从此选项开始建立新的分栏CAPTION选项显示的名称CHECKED用于指定此选项是否CHECKEDCOMMAND用于指定选项对应的WINDOWS COMMAND IDCOUNT用于指示此选项的子选项数目DEFAULT用于指示此选项是否为子菜单的预设项目EANBLED用于指示此选项是否可用GROUPINDEX用于指定此选项所隶属的逻辑群组,以控制主菜单之间的合并或单选钮互斥的效果HANDLE对应此选项的Drop-DOWN菜单的WINDOWS MENU HANDLE HELPCONTEXT对应此选项的HELP CONTEXT IDHINT用于设定鼠标移入选项范围时的提示信息IMAGEINDEX用以指定哪个图像显示于选项旁ITEMS此选项的子菜单项目数MENUINDEX此选项的父菜单内的选项索引值PARENT此选项的父菜单的选项RADIOITEM用于设定此选项是否与同组其它选项互斥SHORTCUT用于设定此选项的快捷键VISIBLE用于设定此选项是否可见标签(LABEL)常用属性:属性说明ALIGNMENT用于设定标签内文本的对齐方式(水平方向)AUTOSIZE用于设定标签组件是否根据组件内文本自动调整大小FOCUSCONTROL用于设定键入标签内快捷键后应接受FOCUS的组件LAYOUT用于设定标签文本如何放置(垂直方向)SHOWACCELCHAR用于设定是否允许标签内文本是否显示画有下划线的快捷键值TRANSPARENT用于设定组件是否透明WORDWRAP用于设定组件文本宽于组件宽度时是否自动换行编辑框(EDIT、MASKEDIT)的属性:属性说明AUTOSelect用于设定组件获得FOCUS后是否自动选取所有文本AUTOSIZE用于设定组件内增加输入文字时,是否自动加长组件长度BORDERSTYLE用于设定组件边框风格CANUNDO用于设定组件内文本是否可UNDOCHARCASE用于设定组件内文本大小写状况HIDESelectION用于设定组件失去FOCUS时,选取文本是否有效MAXLENGTH用于设定组件内输入文本的最大长度MODIFIED可用于判定组件内文本是否发生更改OEMCONVERT决定是否将编辑框内文字ASCII码转换成OEM,再由OEM转换为ASCIIPASSWORDCHAR设定密码输入时取代的字符READONLY设定编辑框内容是否可修改SELLENGTH指示编辑框内选定文本长度SELSTART指示编辑框内选定文本的起始位置SELTEXT指示编辑框内选定文本EDITMASK指示MASKEDIT掩码字符串按钮(BUTTON、BITBTN、SPEED BUTTON)常见属性:普通BUTTON属性说明CANCEL设定此按钮是否为取消钮(取消钮即在程序执行时若按ESC键可执行此按钮的单击事件)DEFAULT指按下ENTER键后是否执行此按的单击事件MODALRESULT通常用于对话框窗体中,当按下此钮时,此属性值即成为此按钮隶属的MODAL窗体的MODALRESULTCAPTION设定或取得此按钮上显示的标题BITBTN属性说明(图形式按钮)GLYPH用以设定此按钮上出现的图像KIND用以指定按钮的类型LAYOUT用以设定图像在按钮上显示的位置MARGIN用以设定按钮边与图像边之间的距离(以象素为单位)NUMGLYPHS用以设定按钮图像的数目SPACION用以设定图像与文本之间的距离(以象素为单位)STYLE用以设定按钮外观SPEED BUTTON[color=Red]属性说明(快速按钮)[/color] ALLOWALLUP用以设定是否包含此快速钮的组中是否能同时保持UP状态DOWN用以设定此快速钮是否已被选取FLAT用以设定此快速钮是否显示3D边的效果GROUPINDEX用以设定快速钮的组TRANSPARENT用以设定快速钮是否透明备注组件(MEMO)的常见属性和事件:属性说明LINES用于取得组件中文本(为数组,因此可支持取单行文本)TEXT用于取得组件中文本(字符串)READONLY用于设定组件文本是否可修改SCROLLBARS用于设定组件滚动条模式WANTRETURNS用于设定输入的ENTER键是否作为文本内容WORDWRAP用于设定文本是否自动换行SELSTART指示选中文本的起始位置SELLENGTH指示选中文本的长度WANTTABS用于设定输入的TAB键是否作为文本内容SELTEXT指示选中文本事件说明MEMO.LINES.ADD()在当前行增加一行文本MEMO.LINES.APPEND()在末追加一行文本MEMO.LINES.Insert在指定位置增加一行文本MEMO.LINES.Delete删除指定行文本MEMO.LINES.LOADFROMFILE从指定文件导入文本到组件MEMO.LINES.LOADFROMSTREAM从指定流导入文本到组件MEMO.LINES.SAVETOFILE将组件文本存为指定文件MEMO.LINES.SAVETOSTREAM将组件文本存为指定流MEMO.CLEAR清除组件所有文本MEMO.CUTTOCLIPBOARD将选定文本剪切到剪贴板MEMO.COPYTOCLIPBOARD将选定文本复制到剪贴板MEMO.PASTEFROMCLIPBOARD从剪贴板粘贴文本到当前位置复选框(CHECKBOX)常见属性:属性说明ALIGNMENT设定复选框标题位置ALLOWGRAYED决定复选框是否存在GRAYED状态CHECKED决定复选框状态STATE指示复选框状态单选按钮(RADIOBUTTON)常见属性:(提供互斥选项,因此通常用于成组实现,可用GROUPBOX或RADIOGROUP 实现)属性说明ALIGNMENT设定单选框标题位置CHECKED决定单选框状态组框(GROUPBOX)常见属性:(用于作容器)属性说明CAPTION组框标题,通常用于指示组件用途单选分组框(RADIOGROUP)常见属性:[color=Red]属性说明CAPTION指示单选组合名称COLUMNS指示单选按钮又单行或多行为单位显示ITEMS单选按钮标题内容(以行为单位)ITEMINDEX指示当前选定的单选按钮的索引值列表框(LISTBOX)常见属性:属性说明CANVAS提供自定义显示列表框项目内容的画板,用于ONDRAWITEM事件COLUMNS设定多重列列表框的列数EXTENDEDSelect指定是否可使用SHIFT键进行连选ITEMHEIGHT设定列表框项目的高度ITEMINDEX指定选取的项目的索引值ITEMS项目的字符串内容MULTISelect设定是否允许多重选取SELCOUNT列表框中选定项目数目SelectED指示某个项目是否被选取SORTED指定列表框中项目击者是否按字母顺序排序STYLE指示列表框显示模式TOPINDEX指示列表框顶端项目的索引值组合框(COMBOBOX)常见属性:属性说明CANVAS提供自定义显示组合框项目内容的画板,用于ONDRAWITEM事件CHARCASE设定组合框内文字字母大小写状况DropDOWNCOUNT设定组合框下拦菜单最大显示项目个数DropPEDDOWN用于判定组合框是否处于下拉菜单的状态ITEMINDEX指示下拉菜单中目前被选取的项目的索引值ITEMS下拉菜单项目内容MAXLENGTH设定组合框中编辑部分可输入的字符最大个数SELLENGTH指示组合框编辑部分被选取文本长度SELTEXT指示组合框中编辑部分被选取文本SELSTART指示组合框中编辑部分被选取文本起始位置STYLE指示组合框显示模式滚动条(SCROLLBAR)常见属性:属性说明MAX指示滚动条最大值MIN指示滚动条最小值POSITION指示滑动块当前位置LARGECHANGE指示鼠标按滚动条框至滑动块之间区域时移动值SMALLCHANGE指示鼠标按下滚动条两端箭头时移动值KIND指示滚动条类型(水平型或垂直型)PAGESIZE指示按下PAGEUP或PAGEDOWN时变化量图像框组件(IMAGE)常见属性:属性说明AUTOSIZE本组件是否调整成为与读取图像同等大小INCREMENTALDISPALY读较大型图像文件时是否逐步显示PICTURE指向图像文件对象,能常为文件名STRETCH是否将图像自动调整为本组件预设大小图像列表框(IMAGELIST)常见属性:属性说明BKCOLOR指定背景颜色BLENDCOLOR前景混合颜色COUNT组件中图像个数DRAWINGSTYLE指示本组件绘出图像时采用的方式HEIGHT组件内各图像的高度值IMAGETYPE绘制图像时是否加上MASK图像MASKED设定是否可以加上MASKWIDTH组件内各图像的宽度值工具栏组件(TOOLBAR)常见属性:属性说明AUTOSIZE设定工具栏是否自动调整大小以容纳BAND BUTTONCOUNT工具栏中按钮个数BUTTONHEIGHT工具栏中的按钮高度BUTTONS以INDEX表示在工具栏中的按钮BUTTONWIDTH工具栏中的按钮宽度DISABLEDIMAGES当工具按钮DISABLED时显示的图像列表FLAT是否设定浮出效果HOTIMAGES当鼠标指向工具栏按钮时显示的图像列表IMAGES提供显示在工具栏按钮上的图像列表INDENT设定工具栏左侧间隔大小LIST设定标题文字是否显示在图形的右方ROWCOUNT指定工具栏的行数SHOWCAPTIONS设定工具按钮是否显示文字WARPABLE设定工具栏排列按钮时是否自动换行TOOLBUTTON[color=Red]属性说明[/color] ALLOWALLUP设定同组工具按钮是否可以都未被选取DOWN设定按钮是否可停在被按下的状态DropDOWNMENU当工具按钮按下时所出现的菜单GROUPED设定同组工具按钮IMAGEINDEX关联的图像在图像列表框中的索引值INDETERMINATE是否提供工具栏第三种情况MARKED设定按钮是否有阴影STYLE设定按钮样式WRAP设定在此工具按钮新增者是否为另一新栏酷栏(COOLBAR)常见属性:属性说明ALIGN设定COOLBAR的对齐方式AUTOSIZE设定酷栏是否自动调整大小以容纳BAND BANDBORDERSTYLE设定BAND的边界风格BANDS显示COOLBAR内所有的BANDBITMAP设定BAND的背景图像FIXEDORDER设定是否可自行调整BAND的顺序FIXEDSIZE设定是否以单一设度限定酷栏内所有的BAND IMAGES提供BANDS所需要的图像SHOWTEXT设定BAND是否显示文字VERTICAL设定BAND的排列方式(水平排列或垂直排列)DOCKSITE是否允许停泊状态栏组件(STATUSBAR)常见属性:属性说明PANELS设定状态栏组件区域SIMPLEPANEL设定状态栏单个区域SIMPLETEXT设定状态栏单个区域的文本ALIGNMENT设定区域文本对齐方式TEXT设定区域显示文本WIDTH设定区域宽度进度条组件(PROGRESSBAR)常见属性和事件:属性说明MAX设定POSITION最大值MIN设定POSITION最小值orIENTATION设定组件显示的方向POSITION设定进度条当前位置SMOOTH设定进度条的进度指针为平滑或间隔方式STEP设定调用STEPIT方法时所增加的量事件说明STEPBY(INTEGER)进度条增加值(由参数指定增量)STEPIT进度条增加值(由STEP属性指定增量)轨迹条组件(TRACKBAR)常见属性:属性说明FRQUENCY设定本控制刻度间的间隔值LINESIZE设定按方向键时移动量MAX设定POSITION最大值MIN设定POSITION最小值orIENTATION设定本组件显示的方向PAGESIZE设定PAGEUP或PAGEDOWN的移动量POSITION设定本组件当前位置SELEND设定选定范围的最后位置SELSTART设定选定范围的开始位置SLIDERVISIBLE设定本组件中滑块是否显示TICKMARKS设定刻度显示的方向位置TICKSTYLE设定组件刻度记号的配置方式多页标签(PAGECONTROL)常见属性属性说明MULTILINE设定组件是否依标签数目自定调整行数ACTIVEPAGE当前组件选中标签TABPOSITION设定组件标签所有位置STYLE设定组件标签样式CAPTION设定指定标签标题PAGEINDEX指示标签的位置TABVISIBLE设定指定标签是否显示。
-------------------toolButton属性------------------------------------------align 设置组件对齐(同其父容器)方式alignmentallowAllupBiDiModeborderstyle 设置组件边框形状caption 设置组件标题ctl3d 设置组件边框是否为3D模式,若borderstyle设置为bsnone则此属性无效color 设定组件背景色彩cursor 设定鼠标经由组件时间标所显示的外形disabledindexdowndowmIndexdragcursordragKingddragModedropDownMenu 鼠标点击(弹出式)快捷菜单popupmenu 设定鼠标右键(弹出式)快捷菜单enabled 设定组件是否能使用,当设为false时组件会呈灰色font 设定组件内文字的字型、字体大小、颜色等guoupIndexheight 设定组件高度helpContexthelpKeywordhelpTypehelpcontent 用来为辅助说明文件中的索引值建破关系hinthotIndeximageInedx 在图片集合中所添加图片的idimages 图片集合layout 布局left 设定组件与父组件左边框间的距离parentBiDiModeparentFontparentShowHintselectionColorStar 渐变开始颜色selectionColorStop 渐变结束颜色selectFrameColor 渐变框架颜色gradientColorStyle 颜色渐变风格gcsMSOffice不显示渐变格gcsCustom显示渐变风格showCaption 显示caption内容showHinttagtaborder 设定组件在按下TAB键后焦点(focus)挪动的次序tabstop 若设为FALSE,性用品批发,则按TAB键后焦点并不会在此组件上停留top 设定组件与父组件上边框间的距离toolStyle 显示风格为button or dropDowmtuansparentuseToolbarButtonLayoutuseToolbarButtonSizeuseToolbarShowCaptionuseToolbarVisualStylevisible 设定组件是否可见,此属性只在履行时起作用visualStyle 按钮显示风格(是否显示按钮边框)width 设定组件显示宽度==========================toolbutton事件========================================actiondropDownMenu鼠标点击弹出下拉列表popupMenu 设定鼠标右键(弹出式)快捷菜单conchange 当组件有所转变时触发的事件onclick 当在此组件上按下鼠标左键时触发的事件onContextPopuponDragDroponDragOveronDropDownondblclick 当在此组件上双击鼠标左键时触发的事件onenter 当焦点进入此组件时触发的事件onEndDockonEndDragonexit 当切换到其它组件使该组件失去焦点时触发的事件,但当切换到另一窗体或另一利用程序时此事件不会触发onkeydown 当在拥有焦点的组件上按下某个键时触发的事件,按键包括所有的英文、数字键、方向键、功效键等onkeypress 当在领有焦点的组件上按下某个键时触发的事件,但按键只包含所有的英文、数字键、TAB、BACKSPACE、ENTER、ESConkeyup 当使用者放开键盘上的按键时触发的事件,按键看ONKEYDOWNonmousedown 当鼠标键在某个组件按下时触发的事件(其参数包括哪个鼠标键被按下、是否有特别键(CTRL、ALT、SHIFT)被按下以及鼠标当前的坐标)onmousemove 当鼠标在组件内移动时触发的事件onmouseup 当鼠标键在组件上方放开时所触发的事件onMouseEnteronMouseLeaveonstarDockonStarDragonpaint 在组件须要被重画时触发的事件,此时可进行自定义画法--------------------------窗体组件---------------------------------窗体组件(FORM)常见属性及事件active 指示此窗体是否占有focusactivecontrol 指示窗体中目前拥有focus的组件activemdichild 指示主窗体中目前拥有focus的子窗体activeolecontrol 用于取得或设定此窗体上的OLE节制,以响应FOCUS改变bordericons 指定哪些icon显示在窗体的title bar上bordersytle 用以指定窗体border外观及行为canvas 提供使用者可在窗体上client内自行显示的画板,普通在onpaint事件中使用clienthandle 提供可存取体系内部使用的mdi client window handleclientheight 窗体客户区高度clientrect 窗体客户区所对应的矩形clentwidth 窗体客户区宽度defaultmonitor 指定此窗体所显示的预设的显示器,用于多显示器环境下designer 此窗体的设计界面,男性自慰,个别不必用户设定droptarger 用以指定窗体是否为目前drag and drop动作的目的floating 用以指示此窗体是否正在停泊在另一个视窗内formstate 用于指示此窗体所处状态formstyle 用于唆使窗体的款式helpfile 用于指定HELP文件icon 指定窗体最小化时所显示的iconkeyprevive 指定此窗体是否需在目前的active组件之前取得键盘输入mdichildcount 用于取得子窗体数目mdichildren 用于取得子窗体(数组)menu 用于指定窗体主菜单modalresult 当窗体作用为MODAL对话框时,作为对话框的后果monitor 用于指示窗体所显示的显示器oldcreateorder 指定oncreate和ondestroy事件何时发生oleformobject 对包含在此窗体内的OLE对象指定OLEFORM界面parent 设定此窗体的parentPARENTBIDIMODE 指定是否此窗体应用PARENT的BIDIMODE PIXELSPERINCH 表示此窗体设计时系统上字形的比例POSITION 表示此窗体的大小及位置PRINTSCALE 表示此窗体打印的比例SCALED 用于指定窗体的大小是否根据PIXELSPERINTCH属性来指定TILEMODE 用于指定TILE办法被调用时子窗体如何排列VISIBLE 用于设定此窗体是否被显示WINDOWMENU 假如窗体是一个MDI PARENT窗体,似乎是针对我而说的,用于指定视窗的菜单WINDOWSTA TE 用于指定窗体如何显示于屏幕中事件阐明ONPAINT 当窗体必需重画时发生ONHELP 当窗体收到HELP恳求时发生ONDRAGDROP 当一个对象拉进此窗体并丢下时发生ONDRAGOVER 当一个对象拉进此窗体时发生ONCONSTRAINEDRESIZE 在ONCANRESIZE事件发生后发生ONCANRESIZE 当打算改变窗体尺寸时确认是否改变ONRESIZE 当窗体尺寸改变时发生ONSTARTDOCK 当对象开始停泊时发生ONENDDOCK 当对象停泊停止时发生ONUNDOCK 当窗体解除停泊时发生ONDOCKDROP 当其它窗体停泊到此组件时发生ONDOCKOVER 当其它窗体向此组件停泊濒临时发生ONGETSITEINFO 当有关停泊新闻传回此窗体时发生ONCREATE 当窗体创立时产生ONCLOSE 当窗体行将封闭时发生ONCLOSEQUERY 在窗体即将关闭时确认是否真的关闭窗体ONDESTROY 当窗体开释时发生ONSHOW 当窗体显示时发生ONHIDE 当窗体暗藏时发生ONACTIVATE 当窗体取得FOCUS时发生ONDEACTIV A TE 当窗体失去FOCUS时发生菜单组件(MAINMENU、POPUPMENU)常见属性属性说明AUTOMERGE 用于指定主窗体的主菜单是否与其它的窗体主菜单合并HANDLE 主菜单的视窗代码BIDIMODE 用于指定选项名是由左至右读或由右至左读IMAGES 用于指定选项旁可显示的图像内容ITEMS 选项的内容OWNERDRAW 用于指定选否是否可自行显示PARENTBIDIMODE 用于指定是否继续父控件的BIDIMODE属性WINDOWHANDLE 使用此菜单的视窗代号菜单项属性说明ACTION 用于指定此选项对应的动作BITMAP 用于指定在此选项旁的图像内容BREAK 用于指定是否从此选项开端树立新的分栏CAPTION 选项显示的名称CHECKED 用于指定此选项是否CHECKEDCOMMAND 用于指定选项对应的WINDOWS COMMAND ID COUNT 用于指示此选项的子选项数目DEFAULT 用于指示此选项是否为子菜单的预设项目EANBLED 用于指示此选项是否可用GROUPINDEX 用于指定此选项所隶属的逻辑群组,以掌握主菜单之间的合并或单选钮互斥的效果HANDLE 对应此选项的DROP-DOWN菜单的WINDOWS MENU HANDLEHELPCONTEXT 对应此选项的HELP CONTEXT IDHINT 用于设定鼠标移入选项范围时的提醒信息IMAGEINDEX 用以指定哪个图像显示于选项旁ITEMS 此选项的子菜单项目数MENUINDEX 此选项的父菜单内的选项索引值PARENT 此选项的父菜单的选项RADIOITEM 用于设定此选项是否与同组其它选项互斥SHORTCUT 用于设定此选项的快捷键VISIBLE 用于设定此选项是否可见标签(LABEL)常用属性:属性说明ALIGNMENT 用于设定标签内文本的对齐方式(程度方向)AUTOSIZE 用于设定标签组件是否依据组件内文本自动调整大小FOCUSCONTROL 用于设定键入标签内快捷键后应接收FOCUS的组件LAYOUT 用于设定标签文本如何放置(垂直方向)SHOW ACCELCHAR 用于设定是否容许标签内文本是否显示画有下划线的快捷键值TRANSPARENT 用于设定组件是否透明WORDWRAP 用于设定组件文本宽于组件宽度时是否自动换行编辑框(EDIT、MASKEDIT)的属性:属性说明AUTOSELECT 用于设定组件失掉FOCUS后是否自动选取所有文本AUTOSIZE 用于设定组件内增长输入文字时,是否自动加长组件长度BORDERSTYLE 用于设定组件边框风格CANUNDO 用于设定组件内文本是否可UNDOCHARCASE 用于设定组件内文本大小写状态HIDESELECTION 用于设定组件失去FOCUS时,选取文本是否有效MAXLENGTH 用于设定组件内输入文本的最大长度MODIFIED 可用于判断组件内文本是否发生更改OEMCONVERT 决定是否将编辑框内文字ASCII码转换成OEM,再由OEM转换为ASCIIPASSWORDCHAR 设定密码输入时代替的字符READONL Y 设定编辑框内容是否可修正SELLENGTH 指示编辑框内选定文本长度SELSTART 指示编辑框内选定文本的起始位置SELTEXT 指示编辑框内选定文本EDITMASK 指导MASKEDIT掩码字符串按钮(BUTTON、BITBTN、SPEED BUTTON)常见属性:一般BUTTON属性说明CANCEL 设定此按钮是否为取消钮(撤消钮即在程序执行时若按ESC键可执行此按钮的单击事件)DEFAULT 指按下ENTER键后是否执行此按的单击事件MODALRESULT 通常用于对话框窗体中,当按下此钮时,小妞,给大爷笑一个,不笑,那大爷给你笑一个,此属性值即成为此按钮附属的MODAL窗体的MODALRESULTCAPTION 设定或取得此按钮上显示的题目BITBTN属性说明(图情势按钮)GL YPH 用以设定此按钮上呈现的图像KIND 用以指定按钮的类型LAYOUT 用以设定图像在按钮上显示的地位MARGIN 用以设定按钮边与图像边之间的间隔(以象素为单位)NUMGL YPHS 用以设定按钮图像的数目SPACION 用以设定图像与文本之间的距离(以象素为单位)STYLE 用以设定按钮外观SPEED BUTTON属性说明(疾速按钮)ALLOWALLUP 用以设定是否包括此倏地钮的组中是否能同时坚持UP状态DOWN 用以设定此快速钮是否已被选取FLAT 用以设定此快速钮是否显示3D边的效果GROUPINDEX 用以设定快捷钮的组TRANSPARENT 用以设定快速钮是否透明备注组件(MEMO)的常见属性和事件:属性说明LINES 用于取得组件中文本(为数组,,因此可支撑取单行文本)TEXT 用于获得组件中文本(字符串)READONL Y 用于设定组件文本是否可修改SCROLLBARS 用于设定组件滚动条模式W ANTRETURNS 用于设定输入的ENTER键是否作为文本内容WORDWRAP 用于设定文本是否主动换行SELSTART 指示选中文本的起始位置SELLENGTH 指示选中文本的长度W ANTTABS 用于设定输入的TAB键是否作为文本内容SELTEXT 指示选中文本事件说明在当前行增加一行文本在末追加一行文本在指定位置增添一行文本删除指定行文本从指定文件导入文本到组件从指定流导入文本到组件将组件文本存为指定文件将组件文本存为指定流肃清组件所有文本将选定文本剪切到剪贴板将选定文本复制到剪贴板从剪贴板粘贴文本到当前位置复选框(CHECKBOX)常见属性:属性说明ALIGNMENT 设定复选框标题位置ALLOWGRAYED 决定复选框是否存在GRAYED状态CHECKED 决议复选框状况STATE 指示复选框状态单选按钮(RADIOBUTTON)常见属性:(供给互斥选项,因而通常用于成组实现,可用GROUPBOX或RADIOGROUP实现)属性说明ALIGNMENT 设定单选框标题位置CHECKED 决定单选框状态组框(GROUPBOX)常见属性:(用于作容器)属性说明CAPTION 组框标题,通常用于指示组件用处单选分组框(RADIOGROUP)常见属性:属性说明CAPTION 指示单选组合名称COLUMNS 指示单选按钮又单行或多行动单位显示ITEMS 单选按钮标题内容(以行为单位)ITEMINDEX 指示当前选定的单选按钮的索引值列表框(LISTBOX)常见属性:属性说明CANV AS 提供自定义显示列表框项目内容的画板,用于ONDRAWITEM事件COLUMNS 设定多重列列表框的列数EXTENDEDSELECT 指定是否可使用SHIFT键进行连选ITEMHEIGHT 设定列表框项目标高度ITEMINDEX 指定选取的项目的索引值ITEMS 项目的字符串内容MULTISELECT 设定是否允很多重选取SELCOUNT 列表框当选定项目数目SELECTED 指示某个项目是否被选取SORTED 指定列表框中项目睹者是否按字母顺序排序STYLE 指示列表框显示模式TOPINDEX 指示列表框顶端名目的索引值组合框(COMBOBOX)常见属性:属性说明CANV AS 提供自定义显示组合框项目内容的画板,用于ONDRAWITEM事件CHARCASE 设定组合框内文字字母大小写状况DROPDOWNCOUNT 设定组合框下拦菜单最大显示项目个数DROPPEDDOWN 用于断定组合框是否处于下拉菜单的状态ITEMINDEX 指示下拉菜单中目前被选取的项目的索引值ITEMS 下拉菜单项目内容MAXLENGTH 设定组合框中编纂局部可输入的字符最大个数SELLENGTH 指示组合框编辑部分被选取文本长度SELTEXT 指示组合框中编辑部门被选取文本SELSTART 指示组合框中编辑部分被选取文本起始位置STYLE 指示组合框显示模式滚动条(SCROLLBAR)常见属性:属性解释MAX 指示滚动条最大值MIN 指示转动条最小值POSITION 指示滑动块当前位置LARGECHANGE 指示鼠标按滚动条框至滑动块之间区域时移动值SMALLCHANGE 指示鼠标按下滚动条两端箭头时移动值KIND 指示滚动条类型(水平型或垂直型)PAGESIZE 指示按下PAGEUP或PAGEDOWN时变更量图像框组件(IMAGE)常见属性:属性说明AUTOSIZE 本组件是否调整成为与读取图像等同大小INCREMENTALDISPAL Y 读较大型图像文件时是否逐渐显示PICTURE 指向图像文件对象,能常为文件名STRETCH 是否将图像自动调整为本组件预设大小图像列表框(IMAGELIST)常见属性:属性说明BKCOLOR 指定背景颜色BLENDCOLOR 远景混杂颜色COUNT 组件中图像个数DRAWINGSTYLE 指示本组件绘出图像时采取的方法HEIGHT 组件内各图像的高度值IMAGETYPE 绘制图像时是否加上MASK图像MASKED 设定是否可以加上MASKWIDTH 组件内各图像的宽度值工具栏组件(TOOLBAR)常见属性:属性说明AUTOSIZE 设定工具栏是否自动调整大小以容纳BAND BUTTONCOUNT 工具栏中按钮个数BUTTONHEIGHT 工具栏中的按钮高度BUTTONS 以INDEX表现在工具栏中的按钮BUTTONWIDTH 工具栏中的按钮宽度DISABLEDIMAGES 当工具按钮DISABLED时显示的图像列表FLAT 是否设定浮出效果HOTIMAGES 当鼠标指向工具栏按钮时显示的图像列表IMAGES 提供显示在工具栏按钮上的图像列表INDENT 设定工具栏左侧距离大小LIST 设定标题文字是否显示在图形的右方ROWCOUNT 指定工具栏的行数SHOWCAPTIONS 设定工具按钮是否显示文字W ARPABLE 设定工具栏排列按钮时是否自动换行TOOLBUTTON属性说明ALLOWALLUP 设定同组工具按钮是否能够都未被选取DOWN 设定按钮是否可停在被按下的状态DROPDOWNMENU 当工具按钮按下时所涌现的菜单GROUPED 设定同组工具按钮IMAGEINDEX 关联的图像在图像列表框中的索引值INDETERMINA TE 是否提供工具栏第三种情形MARKED 设定按钮是否有暗影STYLE 设定按钮样式WRAP 设定在此工具按钮新增者是否为另一新栏酷栏(COOLBAR)常见属性:属性说明ALIGN 设定COOLBAR的对齐方式AUTOSIZE 设定酷栏是否自动调整大小以包容BAND BANDBORDERSTYLE 设定BAND的边界作风BANDS 显示COOLBAR内所有的BANDBITMAP 设定BAND的背景图像FIXEDORDER 设定是否可自行调整BAND的顺序FIXEDSIZE 设定是否以单一设度限定酷栏内所有的BAND IMAGES 提供BANDS所需要的图像SHOWTEXT 设定BAND是否显示文字VERTICAL 设定BAND的排列方式(水平排列或垂直排列)DOCKSITE 是否许可停泊状态栏组件(STA TUSBAR)常见属性:属性说明PANELS 设定状态栏组件区域SIMPLEPANEL 设定状态栏单个区域SIMPLETEXT 设定状态栏单个区域的文本ALIGNMENT 设定区域文本对齐方式TEXT 设定区域显示文本WIDTH 设定区域宽度进度条组件(PROGRESSBAR)常见属性跟事件:属性说明MAX 设定POSITION最大值MIN 设定POSITION最小值ORIENTATION 设定组件显示的方向POSITION 设定进度条当前位置SMOOTH 设定进度条的进度指针为平滑或距离方式STEP 设定调用STEPIT方式时所增加的量事件说明STEPBY(INTEGER)进度条增加值(由参数指定增量)STEPIT 进度条增加值(由STEP属性指定增量)轨迹条组件(TRACKBAR)常见属性:属性说明FRQUENCY 设定本把持刻度间的间隔值LINESIZE 设定按方向键时移动量MAX 设定POSITION最大值MIN 设定POSITION最小值ORIENTATION 设定本组件显示的方向PAGESIZE 设定PAGEUP或PAGEDOWN的移动量POSITION 设定本组件当前位置SELEND 设定选定范畴的最后位置SELSTART 设定选定规模的开始位置SLIDERVISIBLE 设定本组件中滑块是否显示TICKMARKS 设定刻度显示的方向位置TICKSTYLE 设定组件刻度记号的配置方式多页标签(PAGECONTROL)常见属性属性说明MULTILINE 设定组件是否依标签数量自定调剂行数ACTIVEPAGE 当前组件选中标签TABPOSITION 设定组件标签所有位置STYLE 设定组件标签样式CAPTION 设定指定标签标题PAGEINDEX 指示标签的位置TABVISIBLE 设定指定标签是否显示。
Delphi中的容器类作者陈省从Delphi 5开始VCL中增加了一个新的Contnrs单元,单元中定义了8个新的类,全部都是基于标准的TList 类。
TList 类TList 类实际上就是一个可以存储指针的容器类,提供了一系列的方法和属性来添加,删除,重排,定位,存取和排序容器中的类,它是基于数组的机制来实现的容器,比较类似于C++中的Vector和Java中的ArrayList,TList 经常用来保存一组对象列表,基于数组实现的机制使得用下标存取容器中的对象非常快,但是随着容器中的对象的增多,插入和删除对象速度会直线下降,因此不适合频繁添加和删除对象的应用场景。
下面是TList类的属性和方法说明:属性描述Count: Integer;返回列表中的项目数Items[Index: Integer]: Pointer; default通过以0为底的索引下标直接存取列表中的项目方法类型描述Add(Item: Pointer): Integer;函数用来向列表中添加指针Clear;过程清空列表中的项目Delete(Index: Integer);过程删除列表中对应索引的项目IndexOf(Item: Pointer): Integer;函数返回指针在列表中的索引Insert(Index: Integer; Item: Pointer);过程将一个项目插入到列表中的指定位置Remove(Item: Pointer): Integer;函数从列表中删除指针名称类型描述Capacity: Integer;property可以用来获取或设定列表可以容纳的指针数目Extract(Item: Pointer): Pointer;functionExtract 类似于Remove 可以将指针从列表中删除,不同的是返回被删除的指针。
Exchange(Index1, Index2: Integer);procedure交换列表中两个指针First: Pointer;function返回链表中的第一个指针Last: Pointer;function返回链表中最后一个指针Move(CurIndex NewIndex: Integer);procedure将指针从当前位置移动到新的位置Pack;procedure从列表中删除所有nil指针Sort(Compare: TListSortCompare);procedure用来对链表中的项目进行排序,可以设定Compare参数为用户定制的排序函数TObjectList 类TObjectList 类直接从TList 类继承,可以作为对象的容器。
TObjectList类定义如下:TObjectList = class(TList)...publicconstructor Create; overload;constructor Create(AOwnsObjects: Boolean); overload;function Add(AObject: TObject): Integer;function Remove(AObject: TObject): Integer;function IndexOf(AObject: TObject): Integer;function FindInstanceOf(AClass: TClass;AExact: Boolean = True; AStartAt: Integer = 0):Integer;procedure Insert(Index: Integer; AObject: TObject);property OwnsObjects: Boolean;property Items[Index: Integer]: TObject; default;end;不同于TList类,TObjectList类的Add, Remove, IndexOf, Insert等方法都需要传递TObject对象作为参数,由于有了编译期的强类型检查,使得TObjectList比TList更适合保存对象。
此外TObjectList对象有OwnsObjects属性。
当设定为True (默认值),同TList类不同,TObjectList对象将销毁任何从列表中删除的对象。
无论是调用Delete, Remove, Clear 方法,还是释放TObjectList对象,都将销毁列表中的对象。
有了TObjectList类,我们就再也不用使用循环来释放了对象。
这就避免了释放链表对象时,由于忘记释放链表中的对象而导致的内存泄漏。
另外要注意的是OwnsObjects属性不会影响到Extract方法,TObjectList的Extract方法行为类似于TList,只是从列表中移除对象引用,而不会销毁对象。
TObjectList 对象还提供了一个FindInstanceOf 函数,可以返回只有指定对象类型的对象实例在列表中的索引。
如果AExact 参数为True,只有指定对象类型的对象实例会被定位,如果AExact 对象为False,AClass 的子类实例也将被定位。
AStartAt 参数可以用来找到列表中的多个实例,只要每次调用FindInstanceOf 函数时,将起始索引加1,就可以定位到下一个对象,直到FindInstanceOf 返回-1。
下面是代码示意:varidx: Integer;beginidx := -1;repeatidx := ObjList.FindInstanceOf(TMyObject, True, idx+1);if idx >= 0 then...until(idx < 0);end;TComponentList 类Contnrs单元中还定义了TComponentList 类,类定义如下:TComponentList = class(TObjectList)...publicfunction Add(AComponent: TComponent): Integer;function Remove(AComponent: TComponent): Integer;function IndexOf(AComponent: TComponent): Integer;procedure Insert(Index: Integer; AComponent: TComponent);property Items[Index: Integer]: TComponent; default;end;注意TComponentList 是从TObjectList类继承出来的,它的Add, Remove, IndexOf, Insert和Items 方法调用都使用TComponent 类型的参数而不再是TObject类型,因此适合作为TComponent对象的容器。
TComponentList 类还有一个特殊的特性,就是如果链表中的一个组件被释放的话,它将被自动的从TComponentList 链表中删除。
这是利用TComponent的FreeNotification方法可以在组件被销毁时通知链表,这样链表就可以将对象引用从链表中删除的。
TClassList 类Contnrs单元中还定义了TClassList类,类定义如下:TClassList = class(TList)protectedfunction GetItems(Index: Integer): TClass;procedure SetItems(Index: Integer; AClass: TClass);publicfunction Add(aClass: TClass): Integer;function Remove(aClass: TClass): Integer;function IndexOf(aClass: TClass): Integer;procedure Insert(Index: Integer; aClass: TClass);property Items[Index: Integer]: TClassread GetItems write SetItems; default;end;不同于前面两个类,这个类继承于TList的类只是将Add, Remove, IndexOf, Insert和Items 调用的参数从指针换成了TClass元类类型。
TOrderedList, TStack和TQueue 类Contnrs单元还定义了其它三个类:TOrderedList, TStack和TQueue,类型定义如下:TOrderedList = class(TObject)privateFList: TList;protectedprocedure PushItem(AItem: Pointer); virtual; abstract;...publicfunction Count: Integer;function AtLeast(ACount: Integer): Boolean;procedure Push(AItem: Pointer);function Pop: Pointer;function Peek: Pointer;end;TStack = class(TOrderedList)protectedprocedure PushItem(AItem: Pointer); override;end;TQueue = class(TOrderedList)protectedprocedure PushItem(AItem: Pointer); override;end;要注意虽然TOrderedList 并不是从TList继承的,但是它在内部的实现时,使用了TList来储存指针。
另外注意TOrderedList类的PushItem 过程是一个抽象过程,所以我们无法实例化TOrderedList 类,而应该从TOrderedList继承新的类,并实现抽象的PushItem方法。
TStack 和TQueue 正是实现了PushItem抽象方法的类,我们可以实例化TStack 和TQueue类作为后进先出的堆栈(LIFO)和先进先出的队列(FIFO)。
下面是这两个的的方法使用说明:·Count 返回列表中的项目数。
·AtLeast 可以用来检查链表的大小,判断当前列表中的指针数目是否大于传递的参数值,如果为True表示列表中的项目数大于传来的参数。
·对于TStack类Push 方法将指针添加到链表的最后,对于TQueue类Push 方法则将指针插入到链表的开始。