📄 tip04.htm
字号:
98-10-10 2:07
延时:
procedure WinDelay( Duration : Longint );
var
Start : Longint;
begin
Start := GetTickCount;
while GetTickCount - Start <= Duration do
Application.ProcessMessages;
end;
<i>98-09-15 15:14</i>
<b>我又发表了一篇稿件,但是...</b>
这次的稿件在《中国计算机报》的9月7日D14版上。题目中“我和Delphi和故事”。
可我看完之后,一点也乐不起来。因为我把整个“开发心得”的内容都整理在里面
了。发表的部分只是其中我认为最微不足道的。而且还包括了半个月前的“Delphi
使用经验四则”里的两条!真难为情。
<i>98-09-01 15:49</i>
<b>Delphi的一个“小”故障</b>
今天在用Delphi时,发现Query组件的属性无法编辑了。当我试图打开一个已有的
Query的SQL属性时,Delphi提示:
RichEdit line insertion error.
这是一个奇怪的错误信息。开始,我想重装一遍Delphi。这样问题一定可以解决。
接着,我改变了主意。也许正好能做一下试验。我打开光盘上的Delphi文件夹下的
把RUNIMAGE\DELPHI30\BIN下的所有文件复制到我的Delphi 3\bin下。不行……
这真是出乎我的意料。对了,想一下那句提示:RichEdit...,正好我的Win98里面
没有安装写字板,而写字板也是能做RichEdit处理的软件。于是在控制面板里选择
安装/删除程序,安装了Win98的写字板组件,再次启动Delphi,OK!
<i>98-8-28 0:09</i>
<b>在程序中调用Win95的“请选择文件夹”对话框</b>
这真是一个困扰我多日的难题。但今晚偶然查看RX元件包里的Fileutil.pas时,却
有种“踏破铁鞋无觅处,得来全不费功夫”的感觉。源码太难,怎么也看不懂……
不管它,先试试再说。我先点击“Add file to project”按钮,在对话框中选择
RX\Units\Fileutil.pas,再在Form1的uses子句里加上fileutil,在Form1上增加
一个按钮,双击它,输入如下语句:
BrowseDirectory(s,'abc',0);
showmessage(s);
运行,单击按钮,盼望已久的对话框终于出现!随便选一个,按OK,接着显示出已
选的文件夹的全称。小意思!
这件事远未结束。我又找到了好几个很棒的函数/过程库,包括:Bdeutils.pas,
Apputils.pas,Dateutil.pas,Dbutils.pas,Strutils.pas。瞧这些名字!我逐个打
开它们,眼都看得花了。有的函数是我在编程中想到要用的,更多的都是些精致的、
“懒人”专用的函数库。这几个是用BDE API做的:
procedure SetIndex(Table: TTable; const IndexFieldNames: string);
procedure RestoreIndex(Table: TTable);
procedure PackTable(Table: TTable);
procedure ReindexTable(Table: TTable);
这几个多是用了WinAPI:
function FindForm(FormClass: TFormClass): TForm;
function FindShowForm(FormClass: TFormClass; const Caption: string): TForm;
function ShowDialog(FormClass: TFormClass): Boolean;
procedure SaveGridLayout(Grid: TCustomGrid; IniFile: TIniFile);
这些是各种各样的日期型函数:
function CurrentYear: Word;
function IsLeapYear(AYear: Integer): Boolean;
function DaysPerMonth(AYear, AMonth: Integer): Integer;
function FirstDayOfPrevMonth: TDateTime;
篇幅所限,无法一一列举。有机会我一定会好好研究的。
这次的情形好象我要找一匹千里马,结果不光如愿以偿,还找到了《内功心法》以及
《轻功秘笈》,能不高兴吗?
<i>98-08-27 10:01</i>
<b>本地SQL中日期型数据的表示</b>
因开发需要,我想对日期型的字段进行条件限制。在Database Desktop中输入SQL语句
select * from acc a where a.'date'='98-07-27'
DBD显示:Type mismatch in expression
查遍了DBD的Help,也没有找到日期型数据的转换函数。试了各种表达方式,也做不出。
我急了,想起Delphi提供了一个功能强大的QBE(Query by example)。我选择File->
New->QBE Query,在接下来的对话框里选acc.db,窗口上出现了acc表的各字段名称的
列表。我在Date字段前打了个勾,并输入'today',按F8,结果出来了。我再按下“Show
SQL”按钮,哈哈,一个标准的SQL语句显示出来:
SELECT DISTINCT "acc.DB"."Date"
FROM "acc.DB"
WHERE
("acc.DB"."Date" = '08/27/1998')
ORDER BY "acc.DB"."Date"
原来,Paradox是用“/”来分隔日期的。到此为止,真相大白。
查看联机帮助,要改变Paradox的日期格式,应使用BDE Administrator。我依言而行,
在BDE Administrator中选Configuration->System->Formats,将SEPERATOR由“/”改
为“-”,存盘。退出DBD,进入DBD,再次重复上面的查询……怎么?!还是08/27/1998!
也许Delphi在这里做得不够完善也未可知。
</span></pre><p> </p><p><span class=font2>版主:西安 梁 明<br>日期:99-07-29<br>E-mail:<a href=mailto:delphifan@990.net>delphifan@990.net</a></span></p><hr></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -