Páginas (2): 1 2   
sushisan   08-08-2022, 19:47
#1
Hice un programa que arrastra un PictureBox sobre un Panel

En general funciona correctamente pero no parece responder de manera continua.

Cuando arrastro dentro del Panel hay veces que se pone como si no dejase soltar en ese lugar y otras si de manera un poco aleatoria.

Si lo suelto la imagen la coloca en ese lugar pero el evento Drop del panel no devuelve la información correcta como si no lo hubiese hecho.

Ejemplo:

Código:
Public Sub Panel1_Drop()
  Print "Drag Tag: " & Drag.Source.Tag
End

Eso no siempre imprime el Tag, como si  no reconociese el Drop sobre el Panel. Sucede cuando se pone en modo que no permite el Drop dentro del Panel. Insisto, la imagen la coloca en el lugar de todos modos pero no se ejecuta el evento Drop.

Hice un cambio y el problema esta al mover el PictureBox dentro de una grilla predefinida. Aparentemente hay logares donde queda el mouse fuera del objeto

Lo que hago es:

Código:
Public Sub Panel1_DragMove()
  Drag.Source.X = Int((Round((Drag.X + Panel1.X) / Grid_Size)) * Grid_Size)
  Drag.Source.Y = Int((Round((Drag.Y + Panel1.Y) / Grid_Size)) * Grid_Size)
  Drag.Source.Raise
  Drag.Show(Drag.Source)

End
Última modificación: 08-08-2022, 19:57 por sushisan.
tincho   08-08-2022, 20:46
#2
(08-08-2022, 19:47)sushisan escribió: Eso no siempre imprime el Tag, como si  no reconociese el Drop sobre el Panel. Sucede cuando se pone en modo que no permite el Drop dentro del Panel. Insisto, la imagen la coloca en el lugar de todos modos pero no se ejecuta el evento Drop.

Hola, sin el código para estudiarlo resulta muy difícil entender la causa del problema, que puede deberse a que no activaste la propiedad Drop del panel o alguna otra cosa.

1 Saludo.
datobinario   31-12-2022, 14:21
#3
Buenos días, casualmente tengo una dificultad con la propiedad Drag, pero en mi caso quiero llevar la imagen a un navegador.

Este es mi código:
 
Código:
 
Public Sub picTW_MouseDrag()

  picTW.Drag("file://" & picTW.Tag & "\r\n")

End

Lo raro de todo esto es que funciona perfecto en mozilla, pero en chrome no funciona.

Mi pregunta es si saben como hacer que funcione en chrome.

Si hago ese Drag en un archivo de texto deja esto:
 
Código:
file:///home/datobinario/mlb-controles/bb-ref/IMG-PAIS/2022-venezuela-I-T.jpg

(08-08-2022, 19:47)sushisan escribió: Hice un cambio y el problema esta al mover el PictureBox dentro de una grilla predefinida. Aparentemente hay logares donde queda el mouse fuera del objeto

Lo que hago es:

¿y esto resolvió el problema?
Última modificación: 31-12-2022, 14:30 por datobinario.

gambeando ando -o- Yaracuy-Venezuela
Shell   31-12-2022, 16:16
#4
sushishan:

Hay muchos tipos de ejemplos que usan Drag Drop.

Hice uno que intercambio cartas de lugar (un panel precisamente con dos picturebox), otro que es una rejilla y traslado un objeto a cada lugar de la rejilla.
Como dice el compañero Tincho sin el código o parte de este importante a veces no se puede ayudar.

datobinario:

No es exactamente lo mismo que pregunta sushishan, como hablaste de navegadores.
 
(31-12-2022, 14:21)datobinario escribió: Lo raro de todo esto es que funciona perfecto en mozilla, pero en chrome no funciona.

Efectivamente, acabo de probarlo con Mozilla  y funciona y con Chrome muestra la url pero nada mas.
Si luego le das al intro, muestra la imagen arrastrada.

Saludos
Última modificación: 31-12-2022, 17:11 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
datobinario   01-01-2023, 01:22
#5
(31-12-2022, 16:16)Shell escribió: Efectivamente, acabo de probarlo con Mozilla  y funciona y con Chrome muestra la url pero nada mas.
Si luego le das al intro, muestra la imagen arrastrada.

Saludos

Primero que nada gracias por responder esto un día como hoy.

Acabo de probar y no me muestra nada aún con el intro.

En un caso me muestra la url, y en el otro la imagen "transparente" con una X flotante, adjunto fotos para explicar mejor.

Para estar mas en contexto estoy subiendo una foto a twitter, el primer ejemplo es en twitter.com, el 2do es en TweetDeck
Ambos casos en google chrome.

Pero en Mozilla no tengo problemas con ninguna de las dos.

[Imagen: chrome1.png][Imagen: chrome2.png]

gambeando ando -o- Yaracuy-Venezuela
Shell   04-01-2023, 16:49
#6
DatoBinario:

¿ Tu navegador por defecto es Chrome o es Firefox ?. En mi caso casualmente es Chrome ( pero este es el que nos da problemas ).

[Imagen: meCG3oK.png]

¿ Puedes desde Gambas abrir el archivo imagen y mostrarlo en el navegador sin hacer el arrastre ?.
Hay que hacer trampas. Tongue

Dile en aplicaciones preferidas en la pestaña multimedia que el visor de imágenes es Chrome. ( Temporalmente ).
Ahora, crea un ejemplo y añade el componente gb.desktop
En este proyecto puedes tener una imagen y ahora hacemos esto:

Código:
 Desktop.Open("file://" & Application.Path &/ tu_archivo.png)

Y funciona. Pero no sé por que da error en la consola de Gambas, debe ser cosa de Chrome. Me ha devuelto esto en la consola:
 
Cita: 
[5031:5031:0104/153852.960536:ERROR:gpu_memory_buffer_support_x11.cc(44)] dri3 extension not supported.
[5031:5031:0104/153857.639730:ERROR:gl_utils.cc(319)] [.RendererMainThread-0xfc80031f100]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[5031:5031:0104/153857.642261:ERROR:gl_utils.cc(319)] [.RendererMainThread-0xfc80031f100]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[5031:5031:0104/153857.645273:ERROR:gl_utils.cc(319)] [.RendererMainThread-0xfc80031f100]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels
[5031:5031:0104/153858.331910:ERROR:gl_utils.cc(319)] [.RendererMainThread-0xfc80031dc00]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)

Usando los drivers de Nvidia 470, quizás con los "medios libres" no lo hace.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   04-01-2023, 19:57
#7
Arrastrando el archivo a la entrada de texto de Chrome.

[Imagen: YdsSLxO.png]

Necesito pulsar la tecla Intro para que se muestre.

Y si lo abro con el método open de la clase desktop o (ya configurado para que abra las imágenes ).

[Imagen: 2otpw6d.png]

La palabra archivo aparece. Se muestra la imagen y no se necesita pulsar Intro.
 

Creo que me he comido esto. O no acabé de escribirlo.

Abrir archivos locales en Google Chrome

Crea como una regla para poder hacerlo.
 
Cita: La apertura de enlaces a archivos locales está prohibida en Chrome, pero esta extensión le permite abrirlos.
Con esta extensión, ¿podrá abrir archivos locales directamente dentro de Google Chrome?

Esta es una extensión simple que le permite abrir archivos que están en su disco duro, etc. a través de
Google Chrome.

Así que si estaba prohibido por algún motivo de seguridad debía ser.

Pues un archivo local en Chrome se abre con Ctrl + O
Última modificación: 04-01-2023, 20:06 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
datobinario   04-01-2023, 21:36
#8
(04-01-2023, 16:49)Shell escribió: ¿ Puedes desde Gambas abrir el archivo imagen y mostrarlo en el navegador sin hacer el arrastre ?.
Hay que hacer trampas. Tongue

Haciendo el arrastre, incluso, lo puedo mostrar en el navegador sin problemas.

El problema siempre ha sido para ponerlo en una caja de texto de tipo "subir imágenes" o algo así, en mi caso particular es para subir imágenes a twitter, tal como lo estro en las dos imágenes que subí.

Para mi sigue siendo un misterio, porque si yo abro la imagen con el "Visor de imágenes de Mate"  puedo arrastrar la imagen al formulario de twitter sin problemas, he tratado de averiguar que formato usan ellos para arrastrar y no he tenido éxito.

Creo que yo puedo arrastrar al navegador directamente porque en mi código agrego el intro automático con "\r\n" al final de la ruta.

De hecho eso de agregar directamente al formulario nunca lo había probado hasta hoy.

Siempre estuve concentrado en colocar la imagen en el cuadro de texto de twitter.

La propiedad drag de gambas tiene un atributo opcional de formato que no se usar y creo que ahí está la solución.
Código:
imgFrente.Drag("file://" & imgFrente.Tag & "\r\n", Format As String)
Última modificación: 04-01-2023, 21:44 por datobinario.

gambeando ando -o- Yaracuy-Venezuela
Shell   04-01-2023, 23:57
#9
Cita:La propiedad drag de gambas tiene un atributo opcional de formato que no se usar y creo que ahí está la solución.

Te subo un ejemplo.

[Imagen: acdVwuS.png]

Puedes arrastrar el contenido de la etiqueta de texto origen a destino, destino cambiará a origen y mostrará el tipo "mime"
Puedes arrastrar el contenido del picturebox que contiene la Gamba al otro picturebox y mostrará el tipo mime.
También es posible arrastrar la imagen de la gambas a la etiqueta destino, pero solo muestra el tipo mime.

Este es el código del ejemplo.

Código:
Public Sub PictureBox1_MouseDrag()

  If Mouse.Left Then
    Drag.Icon = Picture["icon:/Copy"]
    Last.Drag(Last.Picture.Image)
    'Last.Drag(Last.tag, "text/plain")
  Endif

End


Public Sub PictureBox2_Drop()

  Print Drag.Format

  'Solo permite soltar imágenes
  If Drag.type = Drag.Image Then PictureBox2.Picture = Drag.Data.Picture

End

Public Sub Form_Open()

  PictureBox1.Tag = Application.Path &/ "Gambas3.png"
  PictureBox1.Picture = Picture.Load("Gambas3.png")
  PictureBox1.Mode = PictureBox.Contain
  PictureBox2.Mode = PictureBox.Contain

End

Public Sub Label1_MouseDrag()

  If Mouse.left Then
    Drag.Icon = Picture["icon:/Copy"]
    Last.Drag(Last.text, "text/plain")
    'Last.Drag(Last.text) 'Otra posibilidad
  Endif

End

Public Sub Label2_Drop()

  Print Drag.Format

  'Solo permite texto
  If Drag.type = Drag.Text Then Label2.Text = Drag.Data

End

Public Sub PictureBox1_MouseDown()

  Label2.text = "Destino"


End

Public Sub BtnAbrir_Click()

  Desktop.Open("file://" & Application.Path &/ "Gambas3.png")

End

Pregunta lo que no entiendas.

Saludos
Archivos adjuntos
.gz
ArrastrarTextoOImagen-0.0.1.tar.gz (Tamaño: 41.76 KB Descargas: 4)
Última modificación: 05-01-2023, 00:05 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
datobinario   05-01-2023, 00:21
#10
Voy a probar este ejemplo y les cuento, me late que por ahí está la solución.
Código:
Public Sub PictureBox1_MouseDrag()
 
  If Mouse.Left Then
    Drag.Icon = Picture["icon:/Copy"]
    Last.Drag(Last.Picture.Image)
    'Last.Drag(Last.tag, "text/plain")
  Endif
 
End

De momento les dejo este vídeo que hice con un ejemplo del extraño caso

Video Drap & Drop


Por cierto:
¿como hacen para insertar código en formato gambas aquí en el foro? llevo ya 3 intentos y nada, que pena.   Confused
Última modificación: 05-01-2023, 00:26 por datobinario.

gambeando ando -o- Yaracuy-Venezuela
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.