现在我要做个鼠标点击选中的数字键盘,键盘数值从0到9,为了安全起见,我希望每次打开键盘的时候,上面的数字能够随机改变。
现在我的思路如下:在一个form上摆了一些button,一个方法是随机改变button位置,另一个是随机改变button的caption.一般我会随机改变caption,但是每次窗体都是动态创建的,要是把每次变化后的数值存到配置文件里,每次创建窗体时读取文件数据,然后在这个基础上增加或减小数值,产生新数字。但这样做很有规律性。再一点就是用random产生新数字,然后再从头到尾的判断,要是有重复,就在0到9中间找个不重复的数字,然后赋值。大家有什么高见?请指教了。谢了先

解决方案 »

  1.   

    用個 TStringList 中保存你要的 1~ 9的字符, 每次隨機取一位, 并刪除那一位, 就可以吧???
      

  2.   

    高定
    var
      i: Integer;
      StrList: TStringList;
    begin
      StrList := TStringList.Create;
      for i := 0 to 9 do
      begin
        StrList.Add(IntToStr(i));
      end;
      Randomize;
      for i := 0 to 7 do
      begin
        StrList.Exchange(random(StrList.Count),0);
      end;
      for i := 0 to Strlist.Count-1 do
      begin
        ShowMessage(StrList[i]);
      end;
      StrList.Free;
    end;