Hola:
Limitar movimiento:
Para evitar que las imagenes no se salen de los bordes, desplazalas siempre que esa condicion se cumpla, para ello puedes hacer una funcion como la sigue:
Código Delphi
[-]
function posicionIncorrecta(imagenTop,imagenLeft:integer):boolean;
begin
result := (imagenTop = 0) or (ImagenLeft=0) or (imagenTop+imagen.Height=form.Height) or (imagenLeft+imagen.Width = form.Width); end;
de modo que dentro del procedimiento en el que desplazas las imagenes añades un if--then en el que solo muevas la imagen si no se cumple esta condicion.
Seleccionar:
Para seleccionar una imagen puedes usar la clase Canvas de delphi con la que puedes dibujar un rectangulo que simule que tienes la imagen seleccionada en el evento OnClicK de la imagen.
Mover con el teclado:
Por ultimo para mover las imagenes con el teclado puedes hacer algo similar a moverlas con el raton solo que q tienes que usar el evento OnKeyDown. En este evento compruebas si se ha pulsado las flechas del teclado y dependiendo de cual se pulse mueves en una direccion u otra. Para comprobar que se pulsan las flechas compara 'key' con:
VK_DOWN
VK_UP
VK_LEFT
VK_RIGTH
Un Saludo.