Delphi编程技巧点滴

本贴收藏本人编程中遇到的点滴编程技巧,其中包括网友告知的,论坛收集的及个人总结的。大部分来自爱Delphi(http://www.aidelphi.com)与CSDN。整理于此,以备后用。

1、序数类型(或变量)的取值范围
        Delphi Help中提到“Ordinal types include integer, character, Boolean, enumerated, and subrange types.”也就是说,序数类型包括整数,字符,布尔,枚举和子域类型。要知道它的取值范围,可以使用Low与High两个函数。但Low与High函数的返回结果一般就是所传参数类型的最大值,所以还要使用Ord函数将其转换为整形。如: ShowMessage(IntToStr(Ord(High(char)))); 结果是255。

2、覆盖重写控件属性
        在编写控件时,如果要用父类已经存在的属性的名称定义一个新的属性,也就是重新定义父类已经存在的属性,使其有不同的类型,产生不同的作用。如:
type
  TMyPanel = class(TCustomPanel)
  private
    FAlignment: Integer;    // 将父类的Alignment属性由TAlignment类型改为Integer类型。
    private SetAlignment(Value: Integer);
  public
    property Alignment: Integer read FAlignment write SetAlignment;
  end;

implementation

procedure TMyPanel.SetAlignment(Value: Integer);
begin
  if (Value >= ord(Low(FAlignment))) and (Value <= Ord(High(FAlignment)))
    and (Value <> FAlignment) then
  begin
    FAlignment:= Value;
    Inherited Alignment:= TAlignment(FAlignment);   // 调用父类的Alignment.
  end;
end;

{ 本技巧感谢艾真保的热心解答 }

3、使用回车代替Tab键
        使用回车代替Tab键移动焦点的又一方法:
procedure TfrmEditBase.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
  begin
    if Shift = [ssShift] then
      Perform(WM_NEXTDLGCTL, 1, 0)  // 往回移
    else
      Perform(WM_NEXTDLGCTL, 0, 0);  // 往后移
  end;
end;

4、在程序中运行别的程序
        在很多情况下,如在线更新,需要运行额外的程序来完成一些任务,且多数时候这些任务是直接或间接地操作程序自身的。这时要注意,运行了额外程序之后要及时正确地退出程序本身,这里的“退出”就不能正常的使用MainForm.Close来完成了,因为这样的话,程序会等待额外程序运行并返回后才会退出,如果是在线更新,则程序本身就因为共享冲突而更新失败。所以要用halt过程不正确的终止程序才行,必要时还要使用ChDir()函数改变当前目录,以免该程序还在占用该目录,导致某些任务执行失败。

5、Directory与Path
        按照中文直译过来,Directory就是目录,Path是路径。从以下两个例子可以看出来:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ExtractFilePath(Application.ExeName));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(ExtractFileDir(Application.ExeName));
end;
        在Delphi6中建立一个默认的Windows Application,运行上述代码,则显示依次如下:
C:/Program Files/Borland/Delphi6/Projects/
C:/Program Files/Borland/Delphi6/Projects
        很明显,Path比Directory多了一个“/”。

Delphi程序员经验点滴桌面、网络编程实例集锦》王小华 编著北京希望电子出版社兵器工业出版社目录:第一章 Pascal语言基本功第二章 控件的应用与改造第三章 应用程序与窗口第四章 系统第五章 应用程序的安装与卸载第六章 剪贴板第七章 文件与目录第八章 画布与图形图像第九章 打印第十章 动态链接库dll第十一章 注册表第十二章 内存与字符串第十三章 OLE与DDE第十四章 数据库第十五章 多媒体第十六章 网络 光盘内容及其使用__________________________________________________________________目录内容及使用方法: 本光盘提供了本书实例工程文件的源代码。本光盘包括以下内容: \02 ~ \16 提供了本书02章~16章实例工程文件的源代码__________________________________________________________________特别声明:本光盘中的图片、影像等素材文件仅可作为学习和欣赏之用,未经许可不得用于任何商业等其他用途。__________________________________________________________________联系信息及技术支持:作者(技术支持及相关问题探讨)姓 名:王小华电子邮件:mail@net9999.com关于本书的相关技术支持和软件问题请发电子邮件mail@net9999.com寻求帮助。_________________________________________________________________北京希望电子出版社技术支持:(010)82671627 王守刚 (010)62978181转技术部地 址:海淀区上地三街9号金隅嘉华大厦 C-610 (邮编 100085)邮政地址:北京中关村083信箱邮 编:100080网上书店:www.bhp.com.cn电子邮件:TBD@BHP.com.cn
Delphi程序员经验点滴桌面、网络编程实例集锦》王小华 编著北京希望电子出版社兵器工业出版社目录:第一章 Pascal语言基本功第二章 控件的应用与改造第三章 应用程序与窗口第四章 系统第五章 应用程序的安装与卸载第六章 剪贴板第七章 文件与目录第八章 画布与图形图像第九章 打印第十章 动态链接库dll第十一章 注册表第十二章 内存与字符串第十三章 OLE与DDE第十四章 数据库第十五章 多媒体第十六章 网络 光盘内容及其使用__________________________________________________________________目录内容及使用方法: 本光盘提供了本书实例工程文件的源代码。本光盘包括以下内容: \02 ~ \16 提供了本书02章~16章实例工程文件的源代码__________________________________________________________________特别声明:本光盘中的图片、影像等素材文件仅可作为学习和欣赏之用,未经许可不得用于任何商业等其他用途。__________________________________________________________________联系信息及技术支持:作者(技术支持及相关问题探讨)姓 名:王小华电子邮件:mail@net9999.com关于本书的相关技术支持和软件问题请发电子邮件mail@net9999.com寻求帮助。_________________________________________________________________北京希望电子出版社技术支持:(010)82671627 王守刚 (010)62978181转技术部地 址:海淀区上地三街9号金隅嘉华大厦 C-610 (邮编 100085)邮政地址:北京中关村083信箱邮 编:100080网上书店:www.bhp.com.cn电子邮件:TBD@BHP.com.cn
目录: 1 Uppas40.htm Delphi 4增訂的Object Pascal 19K 2 Api_printer.htm Api函数列表-与打印有关 30K 3 Autocreate.htm 在Delphi3程序中自动检测、建立数据库别名 7K 4 Autoxize.htm DELPHI中自适应表单的实现 3K 5 Bat.htm 在Delphi中利用Tbatch组件完成数据批处理 5K 6 Bde.htm 如何在注册表中注册BDE 2K 7 Bjjlb.htm Delphi编辑俱乐部 4K 8 Cgi_1.htm CGI技术及其开发 11K 9 Cgi_2.htm CGI技术及其开发(二) 12K 10 Chang_backmap.htm 用Delphi实现壁纸更换 3K 11 Change_ip_dns.htm 任何动态改变/添加网络设置中的 TCP/IP 的 DNS 地址 1K 12 Colorcour.htm 让彩色光标出现在Delphi程序中 2K 13 Compon_mk.htm 面向组件的系统开发方法 2K 14 Comtech.htm COM/DCOM如何传递数组 2K 15 Comvsdcom.htm COM/DCOM的区别与联系 2K 16 Cookite.htm Delphi 3中Cookie的建立使用 6K 17 Copy_screen.htm 一个实用的Delphi屏幕拷贝程序的设计 11K 18 Create_oracle7.htm 开发基于ORACLE7数据库的管理信息系统 9K 19 Cs_fast.htm 提高客户机/服务器应用系统性能的一些方法 8K 20 Def_color_dlg.htm 用Delphi实现自定义颜色对话框及其构件 12K 21 Def_preview.htm 自定义快速报表的打印预览窗口 6K 22 Delete.htm 如何把文件删除到回收站中 1K 23 Delphi_c.htm 在Delphi与C++之间实现函数与对象共享 7K 24 Delphi_err.htm Delphi编译错误中文手册 34K 25 Delphi_net1.htm DELPHI与INTERNET 34K 26 Delphi_net2.htm DELPHI与INTERNET 46K 27 Delphi_quick_develop.htm Delphi之快速设计(程序设计篇) 8K 28 Delphi_quick_develop2.htm Delphi之快速设计(界面篇) 3K 29 Delphi23_io.htm 在DELPHI2.0/3.0中直接操作端口 3K 30 Delphivspb.htm 开发AS/400应用系统PB5与Delphi3的比较 9K 31 Device_isok.htm 检查驱动器是否就绪 1K 32 Dtccw03.htm 资源文件在DELPHI中的使用 10K 33 Dttray.htm 如何创建任务栏的应用程序 11K 34 Edit_sysmenu.htm 控制系统菜单 3K 35 Fix_sybase.htm 如何恢复Sybase SQL Anywhere的数据库 4K 36 Fixsysbase_in.htm 解决sybase用户数据库不能进入故障的一种方法 5K 37 From_move.htm 用Delphi实现无边界窗体的移动 3K 38 Function.htm 部分函数、命令、属性中文说明 13K 39 Get_form.htm Win95/98下监控运行的其他程序 2K 40 Get_info.htm 使用Delphi获取系列信息 3K 41 Get_net_friend.htm 如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名 12K 42 H_sort.htm 在DELPHI中用线程排序 4K 43 Happymouse.htm 用Delphi编制趣味动画鼠标 3K 44 Hint.htm 改造HINT的输出方式 5K 45 Howto_chinese_delphi.htm "Delphi之完全汉语"终结版 6K 46 If.htm Delphi数据集过滤技巧 4K 47 Img.htm Delphi下汉字输入法的编程及使用 5K 48 Index_notf.htm 怎样解决打开一个DBF表时的"Index not found.."错误 3K 49 Install.htm 如何制作Delphi程序安装盘 7K 50 Ip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值