![]() |
Iniciando con el dragDrop Delhpi
Hola chico Felices fiestas, Estoy empezando el manejo de DragDrop y dragover. tengo 6 Timage
(image1 ,image2, image3, image4, image5, image6) cada uno con su imagen de momento he conseguido lo básico . pasar una imagen a cualquiera de las otras imágenes. Pero lo que quiero conseguir es que solo pueda pasar la imag1 a imag4 , image 2 a image5 y image3 a image6 . Esto se puede hacer con el Dragdropp y dragover? como se podría hacer???? Un saludo y gracias |
Revisa los eventos relacionados con Drag&Drop.
Verás que hay un parámetro Accept, que te permite definir lo que permites arrastrar sobre un control y lo que no. Por ejemplo: Cita:
Tendrás que controlar que el Serder sea img4, el Source sea img1. En ese caso Accept le asignas True, en otro caso False; Este OnDragOver lo programas sobre img4. |
Grande Neftali muchas gracias pero ahora tengo otro problema ,
El Tema es que estoy intentando hacer un juego, Si el usuario ha pasado la image1 a image4 entonces la puntuación suma 1 , si no no aumanta, bien lo mas lógico para mi seria un botón con un evento onclick algo así: var Form1: TForm1; puntuacion : integer; procedure TForm1.FormCreate(Sender: TObject); begin puntuacion:=0; end; procedure TForm1.Button1Click(Sender: TObject); begin if Image1.Picture=Image4.Picture then inc(puntuacion); Label2.Caption:=IntToStr(puntuacion); end; pero por algun motivo no incrementa puntuación . No se si es porque no compara la imagen nueva en image4 que fue arrastrado de image1 . o otra cosa pero ya estoy mareado de mirar el código y hacer pruebas procedure TForm1.Image4DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if (Sender = image4 ) and (Source = image1) then begin inc(puntuacion); Accept := true; Label2.Caption:=IntToStr(puntuacion); {ShowMessage('muy bien');} end else accept:=false; { ShowMessage('muy mal');} end; Este ejemplo tampoco funciona por alguna razon puntuacion coge el valor de la coordenada x y y en label2 muestra la coordenda x ,y . y en el showmessage siempre sale muy mal. ya habreis notado que acabo de empezar en el tema de programacion. :( |
Antes de nada recomendarte que revises la Guía de estilo de los foros.
Por favor, cuando escribas código, utiliza TAG's para mejorar la lectura. En el código anterior ya te las he añadido yo (los TAG's). |
Cita:
Debes entender lo que has colocado, para saber porqué.
Con esta comparación está comparando 2 direcciones a memoria, pero no 2 imágenes para saber si son iguales. Si te explicas iun poco más tal vez podamos ayudarte. Lo lógico en este caso (si es lo que yo me imagino) es que guardes una estructura en memoria (array bidimensional) con lo que se incluye en cada casilla y compares esos valores, en lugar de las imágenes. |
como no he podido editar por una restriccion de 25 minutos en la edicion de mis mensjes lo pongo aqui.
mi objetivo es que si el usuario no arrastra por ejempl image1 a image4 que o bien : no suma puntos o ,image1.visible :=false asi quedaria fuera de juego image1 o image1.enable:=true. pero no me funciona ninguno como yo quiera Esto esta fuera de mi alcance :( : es que guardes una estructura en memoria (array bidimensional) con lo que se incluye en cada casilla y compares esos valores, en lugar de las imágenes.
|
Tal vez deberías colocar un proyecto de ejemplo (ZIP) para ver qué es lo que estás intentando hacer.
Aunque sea un ejemplo reducido. |
Gracias neftali al final opté por plan b no era lo que que tenia en mente pero me ha sacado del apuro gracias por todo
|
La franja horaria es GMT +2. Ahora son las 17:34:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi