新建工程、双击工程的窗体、用下列代码覆盖unit1的所有内容: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } procedure ButtonClick(Sender: TObject); procedure TimerTimer(Sender: TObject); public { Public declarations } end;var Form1: TForm1;implementationconst FontSize=32; h=48; w=21; var Image:TImage; bmp:array [0..3]of TImage; Button:TButton; Timer:TTimer; xh:array[0..3] of Integer; tz:array[0..3] of Boolean; stop:array[0..3] of Boolean; Panel:TPanel; Memo:TMemo;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin Form1.Position:=poScreenCenter; Form1.Caption:='滚动抽奖'; Form1.Height:=480; Form1.Width:=190; Form1.DoubleBuffered:=true; Panel:=TPanel.Create(self); Panel.Parent:=Form1; Panel.Height:=130; Panel.Align:=alBottom; Panel.Color:=clSkyBlue; Memo:=TMemo.Create(self); Memo.Parent:=Form1; Memo.ReadOnly:=true; Memo.Align:=alClient; Image.Free; Image:=TImage.Create(self); Image.Width:=w; Image.Height:=550; Image.Canvas.Font.Size:=FontSize; Image.Canvas.Font.Color:=clLime; Image.Canvas.Brush.Color:=clNavy; for i:=0 to 9 do Image.Canvas.TextOut(0,i*h+1+i*2,inttostr(i)); Image.Canvas.TextOut(0,501,'0'); for i:=0 to 3 do begin bmp[i]:=TImage.Create(self); bmp[i].Parent:=Panel; bmp[i].Width:=w; bmp[i].Height:=h; bmp[i].Top:=w; bmp[i].Left:=i*42+w; bmp[i].Canvas.Font.Size:=FontSize; bmp[i].Canvas.Brush.Color:=clNavy; bmp[i].Canvas.Font.Color:=clLime; bmp[i].Canvas.TextOut(0,0,'0'); end; Button:=TButton.Create(self); Button.Parent:=Panel; Button.Top:=90; Button.Left:=55; Button.Caption:='开始'; Button.OnClick:=ButtonClick; Timer:=TTimer.Create(self); Timer.Enabled:=false; Timer.OnTimer:=TimerTimer; end;procedure TForm1.TimerTimer(Sender: TObject); var Rct:TRect; i,rdm:integer; s:string; begin rdm:=2; if not Button.Enabled then begin if Timer.Interval<400 then begin rdm:=50; Timer.Interval:=Timer.Interval+10; end else if Timer.Interval<800 then begin Timer.Interval:=Timer.Interval+2; if rdm>3 then rdm:=rdm-2; end; end; for i:=0 to 3 do begin Rct:=bmp[i].ClientRect; if not Button.Enabled then begin if not tz[i] then begin if Random(rdm)<2 then tz[i]:=true; xh[i]:=(xh[i]+10) mod 500; end else begin if (xh[i] mod 50)<>0 then xh[i]:=(xh[i]+10) mod 500 else stop[i]:=false; end; Timer.Enabled:=stop[0] or stop[1] or stop[2] or stop[3]; end else xh[i]:=(xh[i]+60*Random(10)) mod (500); Rct.Top:=xh[i]+1; Rct.Bottom:=xh[i]+1+h; bmp[i].Canvas.CopyRect(bmp[i].ClientRect,Image.Canvas,Rct); end; if not Timer.Enabled then begin for i:=0 to 3 do s:=s+inttostr(xh[i]div 50); if pos(s,Memo.Text)>0 then Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出重复号:'+s) else Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出中奖号:'+s); Button.Caption:='开始'; Button.Enabled:=true; end; end;procedure TForm1.ButtonClick(Sender: TObject); var i:integer; begin if Button.Caption='开始' then begin Button.Caption:='停止'; for i:=0 to 3 do begin tz[i]:=false; stop[i]:=true; end; Randomize; Timer.Interval:=30; Timer.Enabled:=true; end else Button.Enabled:=false; end;end.
漏了一段: procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var i:integer; begin Image.Free; for i:=0 to 3 do bmp[i].Free; Button.Free; Timer.Free;; Panel.Free; Memo.Free; end;
好像以前发布过这样的工具 不过只是exe
再给你另外的算法: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ButtonClick(Sender: TObject); procedure TimerTimer(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementationconst FontSize=32; h=48; w=21; var Image:TImage; Button:TButton; Timer:TTimer; zj,xh:array[0..3] of Integer; stop:array[0..3] of Boolean; Panel:TPanel; Memo:TMemo; cvs:TCanvas; PnlRct,ImageRct:TRect; logo:Boolean;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); var i:Integer; Pt:TPoint; begin Form1.Position:=poScreenCenter; Form1.Caption:='滚动抽奖'; Form1.Height:=480; Form1.Width:=190; Form1.DoubleBuffered:=true; Form1.OnCloseQuery:=FormCloseQuery; Panel:=TPanel.Create(self); Panel.Parent:=Form1; Panel.Height:=130; Panel.Align:=alBottom; Panel.Color:=clSkyBlue; Memo:=TMemo.Create(self); Memo.Parent:=Form1; Memo.ReadOnly:=true; Memo.Align:=alClient; Image.Free; Image:=TImage.Create(self); Image.Width:=w; Image.Height:=550; Image.Canvas.Font.Size:=FontSize; Image.Canvas.Font.Color:=clLime; Image.Canvas.Brush.Color:=clNavy; for i:=0 to 9 do Image.Canvas.TextOut(0,i*h+1+i*2,inttostr(i)); Image.Canvas.TextOut(0,501,'0'); cvs:=TCanvas.Create; cvs.Handle:=GetDC(Panel.Handle); Pt.X:=0; PT.Y:=0; ImageRct.TopLeft:=Pt; PnlRct.TopLeft:=Pt; Pt.X:=21; PT.Y:=50; ImageRct.BottomRight:=Pt; PnlRct.BottomRight:=Pt; PnlRct.Top:=18; PnlRct.Bottom:=68; Button:=TButton.Create(self); Button.Parent:=Panel; Button.Top:=90; Button.Left:=55; Button.Caption:='开始'; logo:=true; Button.OnClick:=ButtonClick; Timer:=TTimer.Create(self); Timer.Interval:=1; Timer.OnTimer:=TimerTimer; Timer.Enabled:=true; end;procedure TForm1.TimerTimer(Sender: TObject); var i:integer; s:string; begin if logo then begin Timer.Enabled:=false; logo:=false; cvs.Brush.Color:=clNavy; cvs.Font.Size:=FontSize; cvs.Font.Color:=clLime; for i:=0 to 3 do cvs.TextOut(i*42+18,w,'0');//初始化4个数码为0 exit; end; for i:=0 to 3 do begin //将要显示的图片: ImageRct.Top:=xh[i]+1; ImageRct.Bottom:=xh[i]+49; //显示的位置: PnlRct.Left:=i*42+18; PnlRct.Right:=i*42+39; //取图显示: cvs.CopyRect(PnlRct,Image.Canvas,ImageRct); if not Button.Enabled and (xh[i]/50=zj[i]) then stop[i]:=false//按停止后,显示与抽奖数相符,设置标志 else xh[i]:=(xh[i]+10) mod 500; //下次取图片的位置 end; Timer.Enabled:=stop[0] or stop[1] or stop[2] or stop[3];//所有标志为假就停止计时 if not Timer.Enabled then //抽奖终了 begin for i:=0 to 3 do s:=s+inttostr(zj[i]); if pos(s,Memo.Text)>0 then Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出重复号:'+s) else Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出中奖号:'+s); Button.Caption:='开始'; Button.Enabled:=true; end else if (not Button.Enabled) then Timer.Interval:=Timer.Interval+5;//如果按了停止键,就让滚动速度逐步变慢 end;procedure TForm1.ButtonClick(Sender: TObject); var i:integer; begin if Button.Caption='开始' then begin Button.Caption:='停止'; Randomize; for i:=0 to 3 do begin zj[i]:=Random(10); xh[i]:=(xh[i]+60*Random(10)) mod (500); if zj[i]<0 then showmessage('fsdf'); stop[i]:=true; end; Timer.Interval:=30; Timer.Enabled:=true; end else Button.Enabled:=false; end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Image.Free; Button.Free; Timer.Free;; Panel.Free; Memo.Free; cvs.Free; end;end.
var i: Integer; str: string; begin Randomize; str := ''; for i := 1 to 8 do Str := str+IntToStr(Random(9)); Label1.Caption := str; end;
var temp.i,j,k:integer; num:array[0..99] of integer; begin for i:=1 to 100 do num[i-1]:=i; j:=99; i:=0; while i <=99 do begin randomize; k:=random(j); while (k=j) or (k <0) do begin randomize; k:=random(j); end; temp:=num[k]; num[k]:=num[j]; num[j]:=temp; j:=j-1; i:=i+1; end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
NumArr: Array of integer;
i: integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
if Timer1.Enabled = true then
begin
Timer1.Enabled := false;
setlength(NumArr, 0);
end
else
begin
setlength(NumArr, 5);
NumArr[0] := 1;
NumArr[1] := 2;
NumArr[2] := 3;
NumArr[3] := 4;
NumArr[4] := 5;
i := 0;
Timer1.Enabled := true;
end;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i >= 5 then
begin
i := 0
end;
Edit1.Text := inttostr(NumArr[i]);
i := i + 1;
end;end.
http://download.csdn.net/detail/butterflyja/2469460
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
Button2: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False;
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
str: string;
begin
Randomize;
str := '';
for i := 1 to 8 do
Str := str+IntToStr(Random(9));
Label1.Caption := str;
end;end.
继续努力学习中..........
顶顶帖子,接分中........顶顶帖子,高手们也请多多赐教
http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
http://topic.csdn.net/u/20110611/12/3258c959-4f28-46b7-b5d6-46135d73036b.html
http://topic.csdn.net/u/20110722/14/89f7440b-c4d7-4c9a-a4bb-a503f5135db2.html
http://topic.csdn.net/u/20110729/10/a7bfaf06-0cf9-4580-8e91-d4e0b92066c6.html
http://topic.csdn.net/u/20110811/16/e56e7cc1-d8c9-40af-92e3-c24ca103d17d.html
http://topic.csdn.net/u/20110830/13/dfae4ca5-d2b9-4889-8a3c-6f7fb61936c9.html
http://topic.csdn.net/u/20110905/12/a1161adb-8e5d-491a-b302-c9722edf2dab.html
http://topic.csdn.net/u/20110913/16/2dbcc9db-8f71-40c5-901f-afae9026f7c2.html
http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure ButtonClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementationconst FontSize=32;
h=48;
w=21;
var Image:TImage;
bmp:array [0..3]of TImage;
Button:TButton;
Timer:TTimer;
xh:array[0..3] of Integer;
tz:array[0..3] of Boolean;
stop:array[0..3] of Boolean;
Panel:TPanel;
Memo:TMemo;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
Form1.Position:=poScreenCenter;
Form1.Caption:='滚动抽奖';
Form1.Height:=480;
Form1.Width:=190;
Form1.DoubleBuffered:=true;
Panel:=TPanel.Create(self);
Panel.Parent:=Form1;
Panel.Height:=130;
Panel.Align:=alBottom;
Panel.Color:=clSkyBlue;
Memo:=TMemo.Create(self);
Memo.Parent:=Form1;
Memo.ReadOnly:=true;
Memo.Align:=alClient;
Image.Free;
Image:=TImage.Create(self);
Image.Width:=w;
Image.Height:=550;
Image.Canvas.Font.Size:=FontSize;
Image.Canvas.Font.Color:=clLime;
Image.Canvas.Brush.Color:=clNavy;
for i:=0 to 9 do Image.Canvas.TextOut(0,i*h+1+i*2,inttostr(i));
Image.Canvas.TextOut(0,501,'0');
for i:=0 to 3 do
begin
bmp[i]:=TImage.Create(self);
bmp[i].Parent:=Panel;
bmp[i].Width:=w;
bmp[i].Height:=h;
bmp[i].Top:=w;
bmp[i].Left:=i*42+w;
bmp[i].Canvas.Font.Size:=FontSize;
bmp[i].Canvas.Brush.Color:=clNavy;
bmp[i].Canvas.Font.Color:=clLime;
bmp[i].Canvas.TextOut(0,0,'0');
end;
Button:=TButton.Create(self);
Button.Parent:=Panel;
Button.Top:=90;
Button.Left:=55;
Button.Caption:='开始';
Button.OnClick:=ButtonClick;
Timer:=TTimer.Create(self);
Timer.Enabled:=false;
Timer.OnTimer:=TimerTimer;
end;procedure TForm1.TimerTimer(Sender: TObject);
var Rct:TRect;
i,rdm:integer;
s:string;
begin
rdm:=2;
if not Button.Enabled then
begin
if Timer.Interval<400 then
begin
rdm:=50;
Timer.Interval:=Timer.Interval+10;
end
else if Timer.Interval<800 then
begin
Timer.Interval:=Timer.Interval+2;
if rdm>3 then rdm:=rdm-2;
end;
end;
for i:=0 to 3 do
begin
Rct:=bmp[i].ClientRect;
if not Button.Enabled then
begin
if not tz[i] then
begin
if Random(rdm)<2 then tz[i]:=true;
xh[i]:=(xh[i]+10) mod 500;
end
else
begin
if (xh[i] mod 50)<>0 then xh[i]:=(xh[i]+10) mod 500
else stop[i]:=false;
end;
Timer.Enabled:=stop[0] or stop[1] or stop[2] or stop[3];
end
else xh[i]:=(xh[i]+60*Random(10)) mod (500);
Rct.Top:=xh[i]+1;
Rct.Bottom:=xh[i]+1+h;
bmp[i].Canvas.CopyRect(bmp[i].ClientRect,Image.Canvas,Rct);
end;
if not Timer.Enabled then
begin
for i:=0 to 3 do s:=s+inttostr(xh[i]div 50);
if pos(s,Memo.Text)>0 then Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出重复号:'+s)
else Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出中奖号:'+s);
Button.Caption:='开始';
Button.Enabled:=true;
end;
end;procedure TForm1.ButtonClick(Sender: TObject);
var i:integer;
begin
if Button.Caption='开始' then
begin
Button.Caption:='停止';
for i:=0 to 3 do
begin
tz[i]:=false;
stop[i]:=true;
end;
Randomize;
Timer.Interval:=30;
Timer.Enabled:=true;
end
else Button.Enabled:=false;
end;end.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var i:integer;
begin
Image.Free;
for i:=0 to 3 do bmp[i].Free;
Button.Free;
Timer.Free;;
Panel.Free;
Memo.Free;
end;
不过只是exe
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure ButtonClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationconst FontSize=32;
h=48;
w=21;
var Image:TImage;
Button:TButton;
Timer:TTimer;
zj,xh:array[0..3] of Integer;
stop:array[0..3] of Boolean;
Panel:TPanel;
Memo:TMemo;
cvs:TCanvas;
PnlRct,ImageRct:TRect;
logo:Boolean;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
Pt:TPoint;
begin
Form1.Position:=poScreenCenter;
Form1.Caption:='滚动抽奖';
Form1.Height:=480;
Form1.Width:=190;
Form1.DoubleBuffered:=true;
Form1.OnCloseQuery:=FormCloseQuery;
Panel:=TPanel.Create(self);
Panel.Parent:=Form1;
Panel.Height:=130;
Panel.Align:=alBottom;
Panel.Color:=clSkyBlue;
Memo:=TMemo.Create(self);
Memo.Parent:=Form1;
Memo.ReadOnly:=true;
Memo.Align:=alClient;
Image.Free;
Image:=TImage.Create(self);
Image.Width:=w;
Image.Height:=550;
Image.Canvas.Font.Size:=FontSize;
Image.Canvas.Font.Color:=clLime;
Image.Canvas.Brush.Color:=clNavy;
for i:=0 to 9 do Image.Canvas.TextOut(0,i*h+1+i*2,inttostr(i));
Image.Canvas.TextOut(0,501,'0');
cvs:=TCanvas.Create;
cvs.Handle:=GetDC(Panel.Handle);
Pt.X:=0;
PT.Y:=0;
ImageRct.TopLeft:=Pt;
PnlRct.TopLeft:=Pt;
Pt.X:=21;
PT.Y:=50;
ImageRct.BottomRight:=Pt;
PnlRct.BottomRight:=Pt;
PnlRct.Top:=18;
PnlRct.Bottom:=68;
Button:=TButton.Create(self);
Button.Parent:=Panel;
Button.Top:=90;
Button.Left:=55;
Button.Caption:='开始';
logo:=true;
Button.OnClick:=ButtonClick;
Timer:=TTimer.Create(self);
Timer.Interval:=1;
Timer.OnTimer:=TimerTimer;
Timer.Enabled:=true;
end;procedure TForm1.TimerTimer(Sender: TObject);
var i:integer;
s:string;
begin
if logo then
begin
Timer.Enabled:=false;
logo:=false;
cvs.Brush.Color:=clNavy;
cvs.Font.Size:=FontSize;
cvs.Font.Color:=clLime;
for i:=0 to 3 do cvs.TextOut(i*42+18,w,'0');//初始化4个数码为0
exit;
end;
for i:=0 to 3 do
begin
//将要显示的图片:
ImageRct.Top:=xh[i]+1;
ImageRct.Bottom:=xh[i]+49;
//显示的位置:
PnlRct.Left:=i*42+18;
PnlRct.Right:=i*42+39;
//取图显示:
cvs.CopyRect(PnlRct,Image.Canvas,ImageRct);
if not Button.Enabled and (xh[i]/50=zj[i]) then stop[i]:=false//按停止后,显示与抽奖数相符,设置标志
else xh[i]:=(xh[i]+10) mod 500; //下次取图片的位置
end;
Timer.Enabled:=stop[0] or stop[1] or stop[2] or stop[3];//所有标志为假就停止计时
if not Timer.Enabled then //抽奖终了
begin
for i:=0 to 3 do s:=s+inttostr(zj[i]);
if pos(s,Memo.Text)>0 then Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出重复号:'+s)
else Memo.Lines.Append('第 '+inttostr(Memo.Lines.Count+1)+' 轮抽出中奖号:'+s);
Button.Caption:='开始';
Button.Enabled:=true;
end
else if (not Button.Enabled) then Timer.Interval:=Timer.Interval+5;//如果按了停止键,就让滚动速度逐步变慢
end;procedure TForm1.ButtonClick(Sender: TObject);
var i:integer;
begin
if Button.Caption='开始' then
begin
Button.Caption:='停止';
Randomize;
for i:=0 to 3 do
begin
zj[i]:=Random(10);
xh[i]:=(xh[i]+60*Random(10)) mod (500);
if zj[i]<0 then showmessage('fsdf');
stop[i]:=true;
end;
Timer.Interval:=30;
Timer.Enabled:=true;
end
else Button.Enabled:=false;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Image.Free;
Button.Free;
Timer.Free;;
Panel.Free;
Memo.Free;
cvs.Free;
end;end.
var
i: Integer;
str: string;
begin
Randomize;
str := '';
for i := 1 to 8 do
Str := str+IntToStr(Random(9));
Label1.Caption := str;
end;
temp.i,j,k:integer;
num:array[0..99] of integer;
begin
for i:=1 to 100 do
num[i-1]:=i;
j:=99;
i:=0;
while i <=99 do
begin
randomize;
k:=random(j);
while (k=j) or (k <0) do
begin
randomize;
k:=random(j);
end;
temp:=num[k];
num[k]:=num[j];
num[j]:=temp;
j:=j-1;
i:=i+1;
end;