Shordi   23-09-2024, 12:24
#1
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/1...sp=sharing


Saludos

No podemos regresar
Shell   24-09-2024, 22:11
#2
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
Última modificación: 24-09-2024, 22:13 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   24-09-2024, 23:48
#3
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
Última modificación: 24-09-2024, 23:49 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   25-09-2024, 08:01
#4
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.

No podemos regresar
Shell   25-09-2024, 14:47
#5
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
Última modificación: 25-09-2024, 14:49 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   25-09-2024, 18:00
#6
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

No podemos regresar
tincho   03-10-2024, 21:36
#7
Muy bueno Shordi, y el video tambien !!

1 Saludo.
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.