Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/05/2009, 05:38
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Interactuar con Web

Interactuar con un formulario en una página HTM cargada en un control WebBrowser implica invocar los métodos y funciones de los objetos reales que están en esa página: botones, campos de texto, objetos de mapa, mapas de bits, tablas, etc. Es decir objetos que se pueden manipular visualmente en un webform.
Pero el caso es que cuando quieres hacer algo con los que contienen, o poner o sacar datos de ellos desde afuera del webform, por ejemplo, usando una aplicación basada en WindowsForms, muchas veces esos métodos no existen sino que los programas como scripts (ASP o Javascript)
En estos casos, las soluciones que tienes son:
1. Invocar los métodos que realmente existen, como es el caso de Value para los textobox.
2. Agregarle un método a la clase de ese objeto en ese html, para lo cual debes incluir en el prototipo de la clase, en el script, algo como esto (está en JavaScript):
Código javascript:
Ver original
  1. GMap2.prototype.cargar = function()
  2.                 {
  3.                 coder=false;
  4.                 var contenido = document.getElementById("geoposiciones").value;
  5.                 var lineas = new Array();
  6.                 var columnas = new Array();
  7.                 var lat;
  8.                 var lng;
  9.                 lineas = contenido.split("\n");
  10.                 for(k = 0; k < lineas.length;k++)
  11.                     {
  12.                     columnas = lineas[k].split(",");
  13.                     lat = parseFloat(columnas[1]);
  14.                     lng = parseFloat(columnas[0]);
  15.                     var punto = new GPoint(lat,lng);
  16.                     dibujar(punto);
  17.                     }
  18.                 coder=true;
  19.                 }
  20.  
  21.         GMap2.prototype.limpiar = function()
  22.                 {
  23.                 map.clearOverlays();
  24.                 markers = new Array();
  25.                 polyPoints = new Array();
  26.                 }
Estas dos funciones apuntan a un objeto mapa de google (GMap2), para agregarle una función para agregar un conjunto de coordenadas, y otro para eliminar todo lo que haya dibujado (son completamente funcionales).
A eso me refiero con que debes sobrecargar la clase, es decir, agregar un método en forma dinámica, para un uso específico.

Como ejemplo, este es el uso del segundo método en un botón:
Código vb.net:
Ver original
  1. Private Sub BtnBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBorrar.Click
  2.         Dim myDoc As HTMLDocumentClass = WebMap.Document
  3.         myDoc.parentWindow.execScript("map.limpiar();", "JavaScript")
  4.     End Sub

¿Ahora se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)