编程日日帖(37)
软件世界
VB
延时功能巧实现
编的程序精巧美妙,运行速度快是一个目标。可有时来得早不如来得巧,也有太快反而不爽的时候。例如动画效果的实现,时间的控制就成了一个不大不小的问题,有时为了实现比较好的效果,往往需要将时间拖延一下,那我们如何来实现呢?
通过对当前时间的控制可达到延时的目的,先取得当前时间,过一段时间后,将此时取得的当前时间和上一个当前时间比较,可控制延时的长短。如何实现呢,VB中Timer正好可以帮我们实现此功能,此函数得到一个从午夜开始到现在经过的秒数,通过对它两次对比,可实现延时。下面是延时子程序,amount来控制具体要延时的秒数。
Sub delay(amount As Single) '延时子程序
Dim starttime As Single
Dim currenttime As Single
starttime = Timer '取得当前时间
Do
currenttime = Timer
DoEvents
Loop While currenttime < startti
me + amount
End Sub (山东 赵玉勇)
Delphi
在DBGrid里控制回车
在Delphi中,DBGrid的默认控件都是Edit,形成了一个表格。但是在这个二维表里进行操作时,每次按回车都是使单元格置于编辑状态,并选定单元格中的内容。可是如果使用DBGrid作为录入数据的控件时,这样的操作很不方便。我们希望回车时,DBGrid可以像在Excel中一样自动地往下移动单元格。
下面说明如何在DBGrid里的一个列里按回车使记录连续往下跳转(或可以执行其他的操作)。方法很简单,只要在DBGrid的KeyDown事件中添加如下代码:
procedure TfrmMain.DBGrid1Key
Down(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then //按键是否为回车
begin
{如果记录指针尚未到达表末尾,就使记录指针下移一个位置(注:①缺少这一语句时,单元格焦点将无法下移;②如果下移前,当前记录已作修改,记录会自动保存。)}
if not ADOQuery1.Eof then
ADOQuery1.Next;
key:=VK_DOWN; //模拟方向键盘的下箭头,使焦点下移一个单元格
end;
end; (湖南 覃坤)