MyContainer.Init *!* Step Through the controls (if you have more controls than the buttons, you may need to alter this) FOR lnObjCount = 1 TO THIS.ControlCount lnRow = INT(RAND(0)*15) && randomly select row DO WHILE THIS.MyArray(lnRow,3) *!* since row has already been assigned, randomly select another row lnRow = INT(RAND(0)*15) LOOP *!* set properties for buttons THIS.Controls(lnObjCount).Top = THIS.MyArray(lnRow,1) THIS.Controls(lnObjCount).Left = THIS.MyArray(lnRow,2) THIS.MyArray(lnRow,3) = .T. ENDFOR THIS.Visible = .T. THIS.RefreshBear in mind, that this is quite simple and the DO LOOP could potentially drag on when attempting to assign the last row or two.