lse;
exit;
end;
if memo1.Modified or memo2.Modified then
CanClose := (application.MessageBox('修改过的设置尚未保存,确实要关闭吗?',
'',MB_ICONQUESTION+MB_YesNo)=ID_Yes);
if CanClose and Memo3.Modified then
CanClose := (application.MessageBox('抽奖结果尚未保存,确实要关闭吗?','',
MB_ICONQUESTION+MB_YesNo+MB_DEFBUTTON2)=ID_Yes);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FIniFIle.Free;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if init then
begin
Label6.Caption := '';
Label4.Caption := '';
Label12.Caption := '';
Label13.Caption := '';
Label14.Caption := '';
Label15.Caption := '';
Button7.Enabled := True;
Button7.SetFocus;
end;
end;
function TForm1.init: Boolean;
var
i,c,n,
vCount,
vTotal: integer;
vReverse: Boolean;
vList: TStringList;
begin
result := false;
Randomize;
Memo3.Lines.Clear;
if Trim(Memo1.Text)='' then
begin
ShowMessage('请先设置抽奖人员名单。');
exit;
end;
if Trim(Memo2.Text)='' then
begin
ShowMessage('请先设置奖项情况。');
exit;
end;
if FItemList = nil then
FItemList := TStringList.Create;
FItemList.Assign(Memo1.Lines);
if FLevelList = nil then
FLevelList := TStringList.Create
else
FLevelList.Clear;
vList := TStringList.Create;
vReverse := CheckBox1.Checked;
c := Memo2.Lines.Count - 1;
vTotal := 0;
for i:= 0 to c do
begin
if vReverse then
n := c - i
else
n := i;
vList.CommaText := Memo2.Lines[n];
if vList.Count < 2 then
begin
ShowMessage('错误的奖项设置:'+vList.CommaText);
exit;
end;
vCount := strtoInt(vList[1]);
inc(vTotal,vCount);
if vTotal > Memo1.Lines.Count then
begin
ShowMessage(format('错误的奖项设置:奖项总人数(%d)大于实际人数(%d)。',
[vTotal, Memo1.Lines.Count]));
exit;
end;
FLevelList.AddObject(vList[0],TObject(vCount));
end;
SetLevel(0);
FCurrentPos := 0;
result := True;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if Button7.Tag = 0
then
begin
Label6.Caption := '开始摇奖....';
Button7.Caption := '抽奖!';
Button7.Tag := 1;
Button8.Enabled := False;
RandomList;
Timer1.Enabled := True;
Label7.Caption := FLevelList[FCurrentLevel];
end else
begin
Timer1.Enabled := False;
if (Trim(Label4.Caption)<>'') and (Trim(Label12.Caption)<>'')
and (Trim(Label13.Caption)<>'') and (Trim(Label14.Caption)<>'')
and (Trim(Label15.Caption)<>'')then
begin
inc(FCurrentItem);
Memo3.Lines.A