Comunidad Gambas-es
Haciendo Drag & Drop to chulos - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Otros (https://gambas-es.org/forum-18.html)
+--- Foro: Videotutoriales (https://gambas-es.org/forum-20.html)
+--- Tema: Haciendo Drag & Drop to chulos (/thread-1798.html)



Haciendo Drag & Drop to chulos - Shordi - 23-09-2024

Cuando juntas gb.Desktop y Drag&Drop, la cosa se pone interesante.

El proyecto del vídeo lo podéis bajar aquí:
http://https://drive.google.com/file/d/1IY2dPj-XPSl4q7EgAGawL6pilV2cJi8E/view?usp=sharing


Saludos


RE: Haciendo Drag & Drop to chulos - Shell - 24-09-2024

Pues no recordaba que hubiese que tener la propiedad .Drop a True en el control donde se realiza
la operación de soltar.

Lo cierto es que funciona sin esta con otros controles, pero con GridView como fuente del arrastre,
es necesaria tenerla activa con Qt. Que cosa. Huh

Saludos


RE: Haciendo Drag & Drop to chulos - Shell - 24-09-2024

Shordi en el formulario FMain_2.

Desactiva el método Opacity y prueba ( antiguamente Transparent),
el método Erase(color). A ver si te gusta.

Si la imagen que capturamos se llamase imgCelda, creo que la llamaste img en el Vídeo.
Podría ser:

Código:
imgCelda.Erase(Color.Elqueteguste)
 
Cita:Create an alpha channel into the image by erasing the specified color.
By default, the white color is used.

The algorithm comes from the GIMP.

Prueba con distintos colores. Ya me dirás que te parece. Smile

Saludos


RE: Haciendo Drag & Drop to chulos - Shordi - 25-09-2024

Suena guay. Eso permite cosas como que lo que se arrastre sea el texto de la celda "escrito en el aire" y cosas así. Mola.

Gracias.


RE: Haciendo Drag & Drop to chulos - Shell - 25-09-2024

He intentado de que solo se arrastre el texto de la celda y no todo su ancho, pero no suele ser muy exacto el tamaño del texto que devuelve.
He probado con fuente mono espaciada, pero no lo consigo.

En el ajuste del ancho de la celda usé esto: ( Tomando la del texto, claro ).

Código:
imgCeldaW = grd.Font.TextWidth(grd[grd.Row, 0].Text)

Se ajusta al tamaño del texto, pero siempre se queda algo corto el tamaño de la captura con respecto al ancho del texto real.
No acaba de acertar cuanto mide el texto con ( TextWidth) . Con la fuente mono espaciada debería funcionar mejor.

Se me ocurre que pueda surgir un problema. Según la orientación del texto en la celda sea distinta a la de por defecto. (Ajustar al lado izquierdo).
La imagen capturada a lo mejor no muestra el texto correctamente. Como si tuviéramos que preguntar antes, hacia donde está
orientado. Como solo captura unas dimensiones, conocer en que parte comienza el texto dentro de la celda se volvería más complicado.

Saludos


RE: Haciendo Drag & Drop to chulos - Shordi - 25-09-2024

Efectivamente queda chulo también. he cambiado el drag así:
Código:
Public Sub gr_MouseDrag()

  Dim nX, nY, nH, nW As Integer
  Dim img As Image

  If Not Mouse.Left Then Return 'si no se filtra el botón hace drag&drop con cualquier botón del ratón
  nX = gr.ScreenX + 3 '+3 y luego -6 para soslayar el marco de la celda
  nY = gr.ScreenY + 3 + (gr.Row * gr.Rows.H)
  nW = gr.Columns[0].w - 6
  nH = gr.Rows.H - 6

  ' Capturar la imagen de la fila seleccionada
  img = Desktop.Screenshot(nX, nY, nW, nH).Image
  img = img.Erase() 'Añadimos el canal Alfa eliminando el blanco
  ' Configurar el icono del arrastre y compensar la posición inicial
  Drag.Icon = img.Picture
  Drag.IconX = nw - (nw - Mouse.x)
  Drag.icony = nh / 2
  ' Iniciar el arrastre con la ruta
  gr.Drag(gr[gr.Row, gr.Column].Text, "text/html")

End

Y ahora parece que arrastras sólo el texto:
[Imagen: pAS1HXR.gif]

Mola.
Big Grin Big Grin


RE: Haciendo Drag & Drop to chulos - tincho - 03-10-2024

Muy bueno Shordi, y el video tambien !!