\' Gambas class file
Public Sub _new()
End
Public Sub Form_Open()
ButtonTexto.Drop = True
PictureBox1.Drop = True
TextArea1.Wrap = True \'para que el texto mas ancho que el control se escriba completo
PictureBox1.border = Border.Plain
PictureBox1.Stretch = True \'la imagen se adapta al picturebox
End
Public Sub PictureBox1_Drop()
arrastreImagen(PictureBox1)
End
Public Sub ButtonTexto_Drop()
Dim ruta As String
ruta = TomaArchivosSoltados((Drag.Paste("text/uri-list")))
Try TextArea1.text = File.Load(ruta)
If Error Then
Message.Info("Se ha producido un error al leer el archivo")
Endif
End
\'-------------------------------------------------------------
\'subrutinas necesarias para extraer la ruta del fichero
\'-------------------------------------------------------------
Private Sub arrastreImagen(pic As PictureBox)
Dim ruta As String
ruta = TomaArchivosSoltados((Drag.Paste("text/uri-list")))
Try Pic.Picture = Picture.Load(ruta)
If Error Then
Message.Info("Se ha producido un error al leer el archivo")
Endif
End
Public Sub TomaArchivosSoltados(ruta As String) As String
ruta = Replace(ruta, "\\n", "")
ruta = Replace(ruta, "\\r", "")
ruta = Right$(ruta, -7) \'Quitamos el file://
ruta = ConvierteRuta(ruta) \'Decodificamos de html a ruta entendible
ruta = Replace(ruta, "\\x00", "") \'ese caracter me da problemas
Return ruta
End
Private Function ConvierteRuta(txt As String) As String
\'\'\' Función de jguardon en gambas-es
\'\'\' Descodifica los caracteres hexadecimales en las URI\'s recorriendo la cadena dada
\'\'\' Params: txt la URI a descodificar
\'\'\' Return: la URI descodificada
Dim txt_len As Integer
Dim i As Integer
Dim ch As String
Dim digits As String
Dim resultado As String
resultado = ""
txt_len = Len(txt)
i = 1
Do While i <= txt_len
\' Examinar el siguiente caracter
ch = Mid$(txt, i, 1)
If ch = "+" Then
\' Convertir a espacio
resultado = resultado & " "
Else If ch <> "%" Then
\' Normal, no cambiar
resultado = resultado & ch
Else If i > txt_len - 2 Then
resultado = resultado & ch
Else
\' Obtener los siguientes caracteres hex.
digits = Mid$(txt, i + 1, 2)
\' Debug digits
\' aquí convertimos el valor hexadecimal a entero y
\' se lo pasamos a Chr que devuelve el carácter correcto.
resultado = resultado & Chr$(CInt(Val("&" & digits)))
i = i + 2
Endif
i = i + 1
Loop
Return resultado
End