我们单位的春节晚会上要用到一个抽取幸运奖的程序,我想用delphi来做开发,但是以前从来没有用过,现在遇到问题请教大家,时间紧急,大家救命啊。代码如下:------------------
unit test;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    MobileNo:TStringList;  //用户保存手机号码
    Index:integer;
   
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  MobileNo:=TStringList.Create;
  MobileNo.Add('13991973625');
  MobileNo.Add('13892818120');
  MobileNo.Add('13991973623');
  MobileNo.Add('13333333333');
end;procedure TForm1.Button1Click(Sender: TObject);var
  i:integer;
begin
  //循环开始,在edit1中显示手机号码;
  for i :=1 to 100 do
    begin
      edit1.Clear; //清空edit内容
      Randomize;//初始化随机数
      Index:=Random (4);//产生随机数索引
      edit1.Text:=MobileNo.Strings[Index];
      sleep(100);
end;end;
procedure TForm1.Button2Click(Sender: TObject);
beginend;end.
----------------------------------------说明:
1.Button1点击之后就会开始随机循环显示手机号码,现在我写的代码有问题,不能实现动态显示手机号码的效果,请指教;
2.Button1点击之后程序停止运行,在edit1中显示中奖的手机号码,这个我也不清楚怎么实现,请指教。

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
        MobileNo:TStringList; //用户保存手机号码
        i:integer;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not Timer1.Enabled  then
    begin
       Timer1.Enabled:=True;
       Button1.Caption:='暂停';
    end
    else
    begin
       Timer1.Enabled:=False;
       Button1.Caption:='开始';
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    MobileNo:=TStringList.Create;
    MobileNo.Add('13991973625');
    MobileNo.Add('13892818120');
    MobileNo.Add('13991973623');
    MobileNo.Add('13333333333');
    Timer1.Enabled:=False;
    i:=0;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Label1.Caption:=MobileNo.Strings[i];
      Inc(i);
      if i>MobileNo.Count-1 then
         i:=0;
    end;end.
      

  2.   

    忘了一点,要将Timer1的Interval设为100效果比较好
      

  3.   

    这个还是用Timer组件比较好时间,把要实现的内容放在Timer里面,Timer.Enabled等于true的时候就开始了Timer,等于false的时候停止。把你的Button1Click改用Timer1Timer就可以了,中间不需要delay。
      

  4.   

    edit1.Text:=MobileNo.Strings[Index];  Application.ProcessMessage; //加这句      sleep(100);
      

  5.   

    第二个问题呢?如何解决按下Button2点击之后程序停止运行,在edit1中显示中奖的手机号码?
      

  6.   

    第二个问题不是解决了么?Timer停止的时候,Edit1.Text不再变化,此时显示的不就是中奖的么?
      

  7.   

    去年晚会上给公司做了一个,用线程写的,有兴趣可以拿去看看,发邮件到[email protected],我发给你
      

  8.   

    楼主幸运 , 我也有一个。发邮件到 [email protected]
      

  9.   

    随便显示,停止的时候Edit1.Text:=自己的手机号
      

  10.   

    我现在程序已经修改如下,但是为什么在edit1中没有动态显示手机号码的效果呢?
    -----------
    unit Unit1;interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls;type
    TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
        Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    private
    { Private declarations }
    MobileNo:TStringList; //用户保存手机号码
    i:integer;
    public
    { Public declarations }
    end;var
    Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not Timer1.Enabled then
    begin
    Timer1.Enabled:=True;
    Button1.Caption:='暂停';
    end
    else
    begin
    Timer1.Enabled:=False;
    Button1.Caption:='开始';
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    MobileNo:=TStringList.Create;
    MobileNo.Add('13991973625');
    MobileNo.Add('13892818120');
    MobileNo.Add('13991973623');
    MobileNo.Add('13333333333');
    Timer1.Enabled:=False;
    i:=0;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    beginedit1.Text:=MobileNo.Strings[i];
    Inc(i);
    if i>MobileNo.Count-1 then
    i:=0;
    end;end.
      

  11.   

    楼主你是不是直接把我的代码复制,然后改了一下.
    但你要注意步骤:
    一、添加你用到的控件:Button1、Timer1和Edit1,并设置它们的属性。
    二、修改代码。
    最后一步,别忘了给控件添加事件。例如:双击Form1,添加 TForm1.FormCreate
      

  12.   

    我现在程序已经修改如下,但是为什么在edit1中没有动态显示手机号码的效果呢?是因为你忘了上面提到的最后一步
      

  13.   

    在Form1的Events页面,双击添加OnCreate事件
    在Button1的Events页面,双击添加OnClick事件
    在Timer1的Events页面,双击添加OnTimer事件
      

  14.   

    pazee(耙子)(今年过年不收礼,收礼只收尿不湿) 说的对啊。
      

  15.   

    >>还有一个问题我一直没有解决,请问:如何解决按下Button2点击之后程序停止运行,在edit1中显示中奖的手机号码?你上面的代码基本上可以了,修改timer1 的时间间隔长一点