hi all!
如果要连续创建多个窗口 希望每个窗口的位置都是随机了 不完全重叠在一起 怎么作?谢谢

解决方案 »

  1.   

    窗体的位置(不改变原大小)主要由左上角坐标控制。
    坐标的随机范围为
    Left: 0..GetSystemMetrics(SM_CXSCREEN)-Width
    Top : 0..GetSystemMetrics(SM_CYSCREEN)-Height---------------------------------------------
    procedure TForm1.FormCreate(Sender: TObject);
    var
       x:Integer;
       y:Integer;
    begin
       x:=GetSystemMetrics(SM_CXSCREEN)-Width;  //È¡´°Ìå×óÉϽǺá×ø±ê×î´ó·¶Î§
       y:=GetSystemMetrics(SM_CYSCREEN)-Height; //È¡´°Ìå×óÉϽÇ×Ý×ø±ê×î´ó·¶Î§
       Randomize;       //³õʼ»¯Ëæ»ú·¢ÉúÆ÷
       Left:=Random(x); //Ëæ»ú´°Ìå×óÉϽǺá×ø±ê
       Randomize;       //Ôٴγõʼ»¯Ëæ»ú·¢ÉúÆ÷
       Top:=Random(y);  //Ëæ»ú´°Ìå×óÉϽÇ×Ý×ø±ê
    end;
      

  2.   

    randomize;
    form1.Left:=random(1024);
    form1.Top:=random(768);
      

  3.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
       x:Integer;
       y:Integer;
    begin
       x:=GetSystemMetrics(SM_CXSCREEN)-Width;  //取窗体左上角横坐标最大范围
       y:=GetSystemMetrics(SM_CYSCREEN)-Height; //取窗体左上角纵坐标最大范围
       Randomize;       //初始化随机发生器
       Left:=Random(x); //随机窗体左上角横坐标
       Randomize;       //再次初始化随机发生器
       Top:=Random(y);  //随机窗体左上角纵坐标
    end;
      

  4.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
    x:integer;
    begin
    randomize;
    form1.Left:=random(100);
    form1.Top:=random(123);
    end;
      

  5.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
    x:integer;
    begin
    randomize;
    form1.Left:=random(1024);
    form1.Top:=random(768);
    end;
      

  6.   

    have a try
    Form1.Left := Random(Screen.Width)
    Form1.Top := Randon(Screen.Height);
      

  7.   

    你用随机函数把每个窗口的top和left值都用随机种子随机一下,就ok了