Cita:- gb.opengl gb.qt5.opengl ¿Para que se usan aquí?
- Dim hTest As WebHitTest = hWebView.HitTest(Mouse.X, Mouse.Y) ¿Que es esto?
Creo recordar que todo eso se debe a la necesidad de saber qué hay ahí donde haces click. Encontré esa manera... pero no me preguntes mucho más, que no recuerdo casi nada.
Cita:Shordi. ¿Que hace el siguiente código?
Me lo temía.
Pues en dos palabras comprueba sobre Qué hemos hecho click, lo almacena en una variable llamada htest y si es un enlace nos saca un baloon con la url y si es una imagen hace... ejem... lo que dice el código. Está clarísimo... claro. Pues eso.
Un poco de compasión con un jubilado oxidado...
Y eso que lo he escrito yo, joer... qué viejuno estoy.
Ahora en serio. Si no te aclaras pregunta again y lo repaso que así, a bote pronto, no recuerdo.
Vale. Ya lo he mirado. En el formulario de edición verás que hay un panel con los elementos necesarios para editar una imagen, el tamaño, la alineación,etc. Cada vez que haces click, si el elemento sobre el que has pulsado es una imagen, esos valores (la url a la que la imagen apunta, tamaño, alienación y demás) se rellenan por si acaso pulsas el botón de editar. Ahora que lo he revisado y escarbado en la memoria, veo que falta algo en el código. Creo recordar que el botón de Insertar/editar imagen en algún momento lo puse Toggle, es decir, que al pulsarlo quedaba pulsado y en ese modo el panel era visible cada vez que clickeabas una imagen y se ocultaba cuando el click era fuera de una imagen y si no estaba activado no se veía nada (aunque los valores sí los cambiaba en el panel). No sé si me explico.
Buscaré por el viejo disco, a ver si encuentro esa versión que creo recordar haber hecho...
Saludos
Lo he encontrado:
Código:
Public Sub hWebView_MouseDown()
Dim hTest As WebHitTest = hWebView.HitTest(Mouse.X, Mouse.Y)
Dim n As Integer
Dim s As String
If htest.link Then
Balloon(hTest.Url, hWebView,, Mouse.X, Mouse.Y)
Stop Event
Else If htest.Image And btnInsertImg.Value Then 'Añadimos condición
pnImg.Visible = True
htest.Element.SetFocus()
bInsertImg.text = ("Actualizar")
btnInsertImg.value = True
urlImg.Text = htest.Url
hWebView.tag = [Mouse.X, Mouse.Y]
widthImg.Value = htest.Element.Geometry.Width
HeightImg.Value = htest.Element.Geometry.Height
s = htest.Element.HTML
n = InStr(s, "float: ")
If n > 0 Then
s = Left(Mid(s, n + 7), InStr(Mid(s, n + 7), ";") - 1)
alignImg.Index = Split(alignImg.Tag, "|").Find(s)
Endif
Else
pnImg.Visible = False
Endif
End
y algo más abajo, en la línea 350 o por ahí, comentas la línea que oculta el panel después de insertar la imagen.
Código:
Public Sub bInsertImg_Click()
Dim sHtml, s As String
Dim hTest As WebHitTest
If Not urlImg.Text Then Return
If Not alignImg.text Then alignImg.index = 0
sHtml = "<img style=\""
If alignImg.text Then sHtml &= "float: &2; "
If widthImg.Value > 0 Then sHtml &= "width: &4px; "
If HeightImg.Value > 0 Then sHtml &= "height: &3px; "
sHtml &= "margin: &5px; \" src=\"&1\">"
sHtml = Subst(sHtml, urlImg.text, Split(alignImg.Tag, "|")[alignImg.Index], HeightImg.value, widthImg.value, marginImg.Text)
If bInsertImg.text = ("Actualizar") Then
hTest = hWebView.HitTest(hWebView.Tag[0], hWebView.Tag[1])
s = htest.HTML
hWebView.HTML = Replace(hwebView.HTML, s, sHtml)
bInsertImg.text = ("Insertar")
Else
hWebView.Eval(Subst("document.execCommand('InsertHTML', false,'&1')", sHtml))
Endif
urlImg.text = ""
alignImg.text = ""
HeightImg.text = ""
widthImg.text = ""
marginImg.text = ""
pnImg.Visible = False
'btnInsertImg.value = False 'esta la comentas o eliminas para que el modo de edición no se cancele.
hWebView.SetFocus()
hwebView.HTML &= " "
End
Por último, esto es a raíz de un vago recuerdo de lo que pretendí hacer en su momento. Si el comportamiento no te parece correcto o intuitivo, acepto lo que hagas.
Saludos