首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 怎么做一个转盘抽奖的程序?

2012-03-21 
delphi 如何做一个转盘抽奖的程序??求高手搞个思路或者直接上码[解决办法]转盘应能够生成一个号码,生成的

delphi 如何做一个转盘抽奖的程序??
求高手搞个思路 或者直接上码


[解决办法]
转盘应能够生成一个号码,生成的号码的每一位都是一个从0—9之间的数字,可使用随机的方法生成,Random函数可以返回一个指定范围的数值,再设计一个数据库存储已经生成的号码,避免产生重复。
[解决办法]
转盘是假的,最后人POST发包才是最主要的
[解决办法]
新建一个工程,复制下列代码,覆盖你的 unit1 的所有内容、然后在属性管理器分别关联窗体的 OnCreate、OnCloseQuery 事件。

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Pies, StdCtrls, ExtCtrls, ComCtrls, Spin;type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);  private    { Private declarations }    procedure ButtonClick(Sender: TObject);    procedure Timer1Timer(Sender: TObject);    procedure Timer2Timer(Sender: TObject);  public    { Public declarations }  end;var  Form1: TForm1;{本工程需要使用 Tpie 组件,如没安装,须先在 delphi 主菜单 Tools、Environment Options 添加路径:C:\Program Files\Borland\Delphi7\Demos\PropEdit,并在该位置打开 pielib.dpk、编译和安装,Tpie 控件是安装在 控件 Samples 组。(delphi6、7 自带 demo 中,均有此控件)}implementationvar pie:array[0..10] of TPie;    ColorBox:TColorBox;    xCount,rCount,aCount,Flicker,frequency:integer;    lab:array[0..9]of TLabel;    labl:TLabel;    Button:TButton;    Memo:TMemo;    StatusBar:TStatusBar;    CheckBox:TCheckBox;    SpinEdit:TSpinEdit;    Timer1,Timer2:TTimer;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);const lab_T:array[0..9]of integer=(24,50,109,185,249,274,251,185,109,50);      lab_L:array[0..9]of integer=(166,240,288,288,240,166,88,43,43,88);var i:integer;begin  Color:=clWindow;  Width:=506;  Height:=400;  Position:=poScreenCenter;  Caption:='轮盘抽奖';  ColorBox:=TColorBox.Create(self);  ColorBox.Parent:=Form1;  for i:=0 to 10 do  begin    pie[i]:=Tpie.Create(self);    pie[i].Parent:=form1;    pie[i].Brush.Color:=ColorBox.Colors[i];    pie[i].Left:=28;    pie[i].Top:=28;    pie[i].Height:=300;    pie[i].Width:=300;    pie[i].Angles.EndAngle:=i*36+36;    pie[i].Angles.StartAngle:=i*36;    pie[i].Pen.Style:=psClear;  end;  pie[10].Angles.EndAngle:=2*36+36;  pie[10].Angles.StartAngle:=2*36;  ColorBox.Free;  Form1.DoubleBuffered:=true;  for i:=0 to 9 do  begin    lab[i]:=TLabel.Create(self);    lab[i].Parent:=Form1;    lab[i].Caption:=inttostr(i);    lab[i].Left:=lab_L[i];    lab[i].Top:=lab_T[i];    lab[i].Font.Color:=clWindow;    lab[i].Font.Size:=36;    lab[i].Transparent:=true;    lab[i].BringToFront;  end;  xCount:=2;  rCount:=0;  frequency:=1;  Button:=TButton.Create(self);  Button.Parent:=Form1;  Button.Left:=260;  Button.Top:=315;  Button.OnClick:=ButtonClick;  Button.Caption:='第 1 次';  Memo:=TMemo.Create(self);  Memo.Parent:=Form1;  Memo.ReadOnly:=true;  Memo.Width:=146;  Memo.Align:=alRight;  Memo.Lines.Append('抽奖结果:');  Memo.Ctl3D:=false;  StatusBar:=TStatusBar.Create(self);  StatusBar.Parent:=Form1;  StatusBar.Panels.Add;  StatusBar.Panels[0].Width:=60;  StatusBar.Panels[0].Text:='中奖号码:';  for i:=1 to 14 do  begin    StatusBar.Panels.Add;    StatusBar.Panels[i].Width:=12;  end;  StatusBar.Panels.Add;  StatusBar.Panels[15].Width:=32;  StatusBar.Panels.Add;  StatusBar.Panels[16].Text:='中国软件研发联盟QQ群122058606 广州佬';  CheckBox:=TCheckBox.Create(self);  CheckBox.Parent:=Form1;  CheckBox.Width:=65;  CheckBox.Caption:='逐次抽';  CheckBox.Checked:=true;  CheckBox.Top:=300;  CheckBox.Left:=10;  labl:=TLabel.Create(self);  labl.Parent:=Form1;  labl.Caption:='号码个数:';  labl.Left:=10;  labl.Top:=326;  SpinEdit:=TSpinEdit.Create(self);  SpinEdit.Parent:=Form1;  SpinEdit.Top:=320;  SpinEdit.Left:=76;  SpinEdit.Width:=42;  SpinEdit.Value:=6;  SpinEdit.MaxValue:=13;  SpinEdit.MinValue:=1;  Timer1:=TTimer.Create(self);  Timer1.Enabled:=false;  Timer1.OnTimer:=Timer1Timer;  Timer2:=TTimer.Create(self);  Timer2.Enabled:=false;  Timer2.OnTimer:=Timer2Timer;  Timer2.Interval:=90;end;procedure TForm1.ButtonClick(Sender: TObject);begin  Button.Enabled:=false;  Timer1.Interval:=100;  Flicker:=0;  rCount:=0;  Randomize;  aCount:=Random(10);  Timer1.Enabled:=true;end;procedure TForm1.Timer1Timer(Sender: TObject);var i:integer;begin  xCount:=(10+xCount-1)mod 10;  pie[10].Angles.EndAngle:=xCount*36+36;  pie[10].Angles.StartAngle:=xCount*36;  for i:=0 to 9 do lab[i].Font.Color:=clWindow;  lab[(12-xCount)mod 10].Font.Color:=clYellow;  if rCount<20+aCount then    inc(rCount)  else  begin    Randomize;    if Random(10)<2 then    begin      if Timer1.Interval<1000 then Timer1.Interval:=Timer1.Interval+200      else      begin        Timer1.Enabled:=false;        Timer2.Enabled:=true;      end;    end;  end;end;procedure TForm1.Timer2Timer(Sender: TObject);var i:integer;    s:string;begin  if Flicker<10 then  begin    pie[10].Visible:=not pie[10].Visible;    inc(Flicker);  end  else  begin    Timer2.Enabled:=false;    StatusBar.Panels[frequency].Text:=Lab[(12-xCount)mod 10].Caption;    Button.Enabled:=true;    xCount:=2;    pie[10].Angles.EndAngle:=xCount*36+36;    pie[10].Angles.StartAngle:=xCount*36;    if frequency>SpinEdit.Value-1 then    begin      for i:=1 to SpinEdit.Value do s:=s+StatusBar.Panels[i].Text;      showmessage('本轮抽奖结果是:“'+s+'”');      memo.Lines.Append('第 '+inttostr(memo.Lines.Count)+' 轮:'+s);      for i:=0 to 9 do lab[i].Font.Color:=clWindow;      Button.Caption:='第 1 次';      for i:=1 to SpinEdit.Value do StatusBar.Panels[i].Text:='';;      frequency:=1;    end    else    begin      inc(frequency);      Button.Caption:='第 '+inttostr(frequency)+' 次';      if not CheckBox.Checked then Button.Click;    end;  end;end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);var i:integer;begin  for i:=0 to 9 do  begin    lab[i].Free;    pie[i].Free;  end;  pie[10].Free;  labl.Free;  Button.Free;  Memo.Free;  StatusBar.Free;  CheckBox.Free;  SpinEdit.Free;  Timer1.Free;  Timer2.Free;end;end. 

热点排行