Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-12-2016
Piter_1 Piter_1 is offline
Registrado
 
Registrado: dic 2016
Posts: 4
Poder: 0
Piter_1 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 27-12-2016
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.352
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
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:
Empezado por Piter_1 Ver Mensaje
...quiero conseguir es que solo pueda pasar la imag1 a imag4
En el evento OnDragOver:

Código Delphi [-]
FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);

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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-12-2016
Piter_1 Piter_1 is offline
Registrado
 
Registrado: dic 2016
Posts: 4
Poder: 0
Piter_1 Va por buen camino
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.

Última edición por Piter_1 fecha: 27-12-2016 a las 17:50:37.
Responder Con Cita
  #4  
Antiguo 27-12-2016
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.352
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
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).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 27-12-2016
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.352
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
Cita:
Empezado por Piter_1 Ver Mensaje
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í:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Image1.Picture=Image5.Picture then
    inc(puntuacion);
  Label2.Caption:=IntToStr(puntuacion);
end;
Si ejecutas paso a paso ese código, imagino que no está pasando por el Inc.
Debes entender lo que has colocado, para saber porqué.

Código Delphi [-]
  if Image1.Picture=Image5.Picture then

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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 27-12-2016
Piter_1 Piter_1 is offline
Registrado
 
Registrado: dic 2016
Posts: 4
Poder: 0
Piter_1 Va por buen camino
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.

Código Delphi [-]
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);Coge los valores de x y  , muestra coordenada en label2 como puntuacion
Accept := true;
Label2.Caption:=IntToStr(puntuacion);
{ShowMessage('muy bien');}
end
else
accept:=false;
{ ShowMessage('muy mal');}   SIEMPRE PASA POR AQUI 
{image1.visble:=false ;} SIEMPRE SE CUMPLE ESTA CONDICION
{image1.enable:=false;}NO HACE NADA

end;
Responder Con Cita
  #7  
Antiguo 27-12-2016
Avatar de Neftali
Neftali Neftali is offline
-Germán Estévez-
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 15.352
Poder: 10
Neftali Va camino a la famaNeftali Va camino a la fama
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 29-12-2016
Piter_1 Piter_1 is offline
Registrado
 
Registrado: dic 2016
Posts: 4
Poder: 0
Piter_1 Va por buen camino
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo simular el dragdrop de un fichero a un TWebbrowser? cocute Varios 10 17-10-2014 22:11:30
TDBGrid + DragDrop + PopUp + Multiselect mjjj Varios 5 21-04-2014 16:18:40
Salida de msdos en delhpi 2010 xerkan Varios 2 08-02-2010 20:54:32
Conectar delhpi con mysql richy08 Conexión con bases de datos 4 24-04-2008 23:02:05
DragDrop de un ListBox a otro?? carrrlos OOP 2 04-05-2007 15:27:04


La franja horaria es GMT +2. Ahora son las 21:06:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi