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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值