Delphi编程俱乐部
问题1:Installshield(delphi 4.0 自带) 作了一个分发工具,遇到两个问题:数据库是foxbase,(1) 虽然选择了包含卸载程序uninstallshied,但最后没有uninstall !(2) 安装后,以前的大富翁离线浏览程序不能运行。
回答:DAO是微软的软件,BDE提供了通过BDE可以再去访问DAO,然后再去访问数据库的能力,你做的安装程序一定是在本机运行过了,而你的BDE在安装后又把DAO的文件破坏或覆盖掉了。访问MS Access 97数据库要用DAO 3.5,BDE中MSACCESS的DLL32应设置为IDDA3532.DLL,访问MS Access 95数据库要用DAO 3.0,BDE中MSACCESS的DLL32应设置为IDDAO32.DLL。
问题2:有不通过BDE就能直接访问DBF(FoxPro)数据库的构件吗?最好能够直接设定索引,要对数据进行排序,还能够运行Locate等方法。
回答:这里有两个比较酷的给你:http://www.nease.net/~bozhi/apollo4.zip ----for d3用于访问xbase的数据库,297K,含源码。http://www.nease.net/~bozhi/hcn6.zip---Halcyon V6.0(440k)直接存取Clipper、Foxpro、Dbase系列的数据库。以上两个控件均符合你的要求,能对索引进行操作,能进行Locate,能做的活比你想象的要多得多。
问题3:本人刚从VB加入DELPHI,想学做个控件,如何由TEdit控件做一个只能输入数值的控件。
回答:方法1.使用 TMaskEdit(在 additional页上),这是一个可以屏蔽输入的Edit控件,将 EditMask设成 ′9999999′你需要的最大位数即可。方法2.自己写 Coding
TNumericEdit = class (TCustomEdit)
private
procedure KeyPress(var Key:Char);override;
end;
procedure TNumericEdit.KeyPress(var Key:Char);
begin
if not key in [′0′..′9′] then key:=#0;
inherited;
end;
问题4:我做了一个控件,想使其在运行状态时能用鼠标拖动放大缩小。取得控件所在的容器,并用容器重画来实现,但会抖动。如何解决?
回答:可以用一个API函数。要往窗口paint前,LockWindowsUpdate(hwnd:HWND),不让某个窗口paint,等paint后在LockWindowsUpdate(0)可以避免paint 一段,窗口就refresh,适用于动态paint。
问题5:大富翁提问后,有人解答,会自动将答案email给提问者。如何实现的?请大虾们指教。谢谢!
回答:本论坛是用 ASP 写的,email 功能是用 Delphi 3 做了一个 Automation Object,用了著名的 SakEmail 控件。在 ASP 中 调用的方式大致如下:
Set Mailer = Server.CreateObject(″sysMail.PostMan″)
Mailer.MailFrom = ″DelphiBBSMaster@nt4.gislab.ecnu.edu.cn″
Mailer.DispName = ″大富翁论坛″
Mailer.MailServer = ???
Mailer.Subject = ″关于:″+???+″ (Notification from Delphi BBS)″
Mailer.MailTo = ???
Mailer.Content = ???
Mailer.SendMail
现在 IIS 4 中已经有加入了连接 smtp server 的功能了。
问题6:Delphi中有2000年问题吗?
回答:所谓2000年问题,并不是某个编程语言的问题,而是早期的数据库系统往往把日期格式定为短格式,只有两位数字描述年份,从而无法同时表示19xx年和20xx年. 当前的系统均已经注意了这个问题,所以2000年的问题应当是针对以往的数据库应用系统而言,而不是Delphi 有没有这个问题。