你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
为Delphi提供Pack和Undelete功能(3)
 

procedure Ttablepro.undelete;

var

CProps: CurProps;

rslt: DBIResult;

bm:TBookmark;

rp:pRECProps;

begin

Check(DbiGetCursorProps(self.Handle, CProps));//取得数据表的属性

if (StrIComp(CProps.szTableType, szDBASE) <> 0) then//如果不是Dbase或Foxpro则退出

raise EDBEngineError.Create(DBIERR_NOTSUPPORTED);

rslt:=DbiValidateProp(hDBIObj(self.Handle), curSOFTDELETEON, True);

//可否设置软删除?

if (rslt = DBIERR_NONE) then

Check(DbiSetProp(hDBIObj(self.Handle), curSOFTDELETEON, Longint(true)));

//设置为可以软删除

Check(DbiGetCursorProps(self.Handle, CProps));

//更新数据表的属性

if (CProps.bDeletedOn = False) then

raise EDatabaseError.Create('软删除没有设置!');

//取得当前的记录位置

bm:=self.GetBookmark;

//将游标移动到第一个记录以前!Not Table.First!

Check(DbiSetTobegin(self.handle));

//不断移动,直到到数据表的最后记录

while (DBIGETNEXTRECORD(self.handle,dbinolock,nil,nil)=DBIERR_NONE) do

begin

//请关闭Delphi的异常响应,以便执行下面的语句!

try

check(DbiUndeleteRecord(self.Handle));

except

//Do somthing here !

end;

end;

//取回原先记录的位置,重新定位

self.GotoBookmark(bm);

self.FreeBookmark(bm);

self.Refresh;

end;

(注:如果可以,请在刊登时删去“Self.refresh”一行,对于原理的介绍无需此行,仅在我的控件的属性中需要,以上代码来自我制作的Delphi控件TTablePro)

在这段代码中已经有了详细的解释,应该可以比较容易的了解undelete的技巧了。当然如果能够不必与源代码打交道是最好的,因此我制作了一个Delphi的控件TtablePro在Table的基础上增加了两个方法PackTable和Undelete;包含了上面介绍的功能。您可以到我的主页免费下载试用,测试版可以免费使用无限制。

如果这篇文章有何问题请与我联络修改。谢谢。另外我可以提供防止应用程序重复加载的技术文章,同样可以提供相应我制作的免费控件。在任务栏显示图标并直接与弹出式菜单的关联的控件与完整技术资料,还可以实现动态图标,目前的免费控件仅支持与指定的菜单关联,就象dataset与datasource一样。我可以提供不少我制作的控件的实现技巧、技术的文章。另外我可以提供围棋自动提子的算法和技巧的文章,代码来自我制作的自由软件-围棋打谱软件2.0b…

我的联络地址:Email:mailto:weiwu@kali.com.cn

我的主页:http://202.96.217.5/~web 169和上海热线的Vip均可直接访问!目前部分控件尚未上载,不过有些我制作的控件可以在其它国内外的Delphi站点看到。

目前我的研究方向是网上的围棋对弈软件、企业决策软件、SQL生成器封装得更好的DirectX5控件(改编自DelphiX,我的改编版本是目前唯一支持Delphi4的)

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089