冥界3大法王 发表于 2017-9-12 07:35

Delphi版本的数字摇号器 怎么写?各位,你们听我的思路对不?


如图所示呵,我先说下思路,各位看对不对啊~~
4个数字标签,对应4个数字时钟控件,用于产生随便数
当单击【开始摇号】后,计时器初始化赋值 ,开始运作 ,去改变label的值

倒计时 没搞过,随便搜索来个结果:

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=intTostr(strToint(Label1.Caption)-1);
if strToint(Label1.Caption) = 0 then
begin
Timer1.Enabled:= false;
end;
end;

zpfttkl 发表于 2017-9-12 08:29

易语言简单点。。。
.版本 2

.子程序 _按钮1_被单击

标签1.标题 = 到文本 (取随机数 (0, 9))
标签2.标题 = 到文本 (取随机数 (0, 9))
标签3.标题 = 到文本 (取随机数 (0, 9))
标签4.标题 = 到文本 (取随机数 (0, 9))

苏紫方璇 发表于 2017-9-12 08:47

感觉一个定时器就可以了,没必要弄4个

冥界3大法王 发表于 2017-9-12 08:50


做好了,还可以吧。

xuanle6 发表于 2017-9-12 08:51

本帖最后由 xuanle6 于 2017-9-12 08:54 编辑

procedure TfrmMain.FormCreate(Sender: TObject);
begin
    Randomize;//初始化随机种子
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Timer1.Enabled :=false;
end;

procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
    Timer1.Tag:=Timer1.Tag-1;
    if Timer1.Tag<=0 then Timer1.Enabled :=false;
    lbTime.Caption:=IntToStr(Timer1.Tag);        //倒计时
    Label1.Caption:=IntToStr(Random(10));        //随机数
    Label2.Caption:=IntToStr(Random(10));
    Label3.Caption:=IntToStr(Random(10));
    Label4.Caption:=IntToStr(Random(10));
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
    Timer1.Tag := 10;   //10秒
    Timer1.Enabled :=True;
end;

wzqoo 发表于 2017-9-21 20:37

似乎 把倒计时放到开始摇号的按钮上能好看点吧

zhunian 发表于 2017-9-28 23:34

一个定时器,轮询取随机数。。。。

水云 发表于 2017-11-2 10:04

为什么用计时器,直接设置点击事件 产生随机数不就行了

Ashes 发表于 2017-12-29 15:27

我用了一个timer来结束滚动显示. 也可以不用定时器,
直接用gettickcount. 在onilde过程中进行滚动.
可以参考我做的点名软件. 基本上可以做到每秒400-600的刷新率.

沐白~老大 发表于 2017-12-29 16:18

这个思路对啊没毛病楼主
页: [1] 2
查看完整版本: Delphi版本的数字摇号器 怎么写?各位,你们听我的思路对不?