Você pode fazer uma função para mover os botões com base em um array, algo tipo isso:
Local aMesas := {}, nMargemHorizontal := 0, nMargemVertical := 0, nAltura := 0, nLargura := 0
Local nPosX := 0, nPosY := 0
aAdd(aMesas,{.T.,oBtn[1]})
aAdd(aMesas,{.T.,oBtn[2]})
aAdd(aMesas,{.F.,oBtn[3]})
aAdd(aMesas,{.T.,oBtn[4]})
nMargemHorizontal := 8
nMargemVertical := 8
nPosX := nMargemHorizontal
nPosY := nMargemVertical
nLargura := 60
nAltura := 60
For i := 1 to Len(aMesas)
if (aMesas[i,MESA_ATIVA])
aMesas[i,MESA_BOTAO]:Enable()
aMesas[i,MESA_BOTAO]:Show()
If ( nPosX + nLargura ) > oDlg:nWidth
nPosY += nAltura + nMargemVertical
nPosX := nMargemHorizontal
end
aMesas[i,MESA_BOTAO]:Move( nPosY, nPosX, nLargura, nAltura, .T. )
nPosX += nLargura
else
aMesas[i,MESA_BOTAO]:Disable()
aMesas[i,MESA_BOTAO]:Hide()
end
aMesas[i,MESA_BOTAO]:Refresh()
end