' suponemos que todos los cheques son del mismo tamaño
public sub Situar_Cheque(IndexCheque as integer)
dim tam as infoMedidas
if indexCheque < 0 or indexcheque> cheque.length then
throw new exception "No existe el índice de cheque " & indexcheque & vbcrlf & "Imposible continuar..."
exit sub
end if
tam.ancho=cheque(indexCheque).ancho
tam.alto=cheque(indexCheque).alto
' 1º una comprobación para verificar si realmente cabe en el área
if Verificar_Tamaño(tam)=true then
if Verificar_TieneSitio(tam)=true then
Cheque(indexcheque).x= p_PosicionActual.x
Cheque(indexcheque).y= p_PosicionActual.y
call Actualizar_Posicion(tam)
else
msgbox "no se ha ubicado el cheque actual con referencia " & algun_dato_que_lo_referencie & " No cabe en la página actual"
end if
else
msgbox "No se pudo situar el cheque su tamaño es mayor que el área destinada al efecto..."
' u otra acción que interese según el caso, por ejemplo enviar la página a la impresora, y luego pedir que se introduzca una nueva hoja...
end if
end sub
private function Verificar_Tamaño(tam as infoMedidas) as boolean
return (tam.ancho <= p_Area.ancho) and tam.Alto <= p_Area.alto)
end function
private function Verificar_TieneSitio(tam as infomedidas) as boolean
return (( p_PosicionActual.x + tam.Ancho) <= p_Area.ancho) and (( p_PosicionActual.Y + tam.alto) <= p_Area.alto)
' nota no se ha considerado margen derecho ni margen inferior....
end function