菜鸟捉虫(5)
软件世界
上期正确答案:
当在控件的OnClick事件中,是万万不能将被触发单击事件的控件给Free掉,否则将发生错误。我们可以将OnClick事件用OnMouseUp来代替即可避免发生错误。将OnClick:=BtnOnClick;改成 OnMouseUp:=BtnOnMouseUp;然后在Private中声明如下:procedure BtnOnMouseMove(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);最后将procedure TForm1.BtnOnClick(Sender: TObject);改成OnMouseUp即可。
获奖名单:
北京 杨勇
上海 王一刚
广东 苏德才
重庆 李晓斌
以上获奖读者将获得电脑报最新出品的电脑报系列配套光盘杂志一套。
本期题目:
下面是一个随机抽取号码的程序,要求不能有重复的号码出现。修改下面的代码以使程序正常运行。
procedure TForm1.Button1Click(Sender: TObject);
var
i,nRe,nNum: Integer;
MaxRandom: Integer;
lsExistNum: TStringList;
begin
i:=1;
MaxRandom:=200;
ListBox1.Clear;
Randomize;
while i <= 50 do
begin
Application.ProcessMessages;
nRe:=0;
while nRe > -1 do
begin
Application.ProcessMessages;
nNum:=Random(MaxRandom);
lsExistNum.IndexOf(IntToStr(nNum)) ;
if nRe = -1 then
begin
lsExistNum.Add(IntToStr(nNum)) ;
ListBox1.Items.Add(IntToStr(nNum)) ;
end;
end;
Inc(i);
end;
lsExistNum.Free;
end;