Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer value de input HTML WebBrowser (https://www.clubdelphi.com/foros/showthread.php?t=62883)

StartKill 19-01-2009 18:46:22

Leer value de input HTML WebBrowser
 
Buenas al foro.

Estoy trabajando con Delphi 7 y utilizando el componente WebBrowser de la pestaña Internet.

En este estoy cargando una pagina web, que leo de un url especifico.

Existe forma que desde Delphi pueda leer el valor de un determinado elemento de dicha pagina?

Por ejemplo, en dicha pagina hay 12 intput y eston tienen sus value y deseo solo jalar los dos ultimos values del conjunto de inputs

Your friend

StartKill
Lima-Perú

roman 19-01-2009 22:16:58

Para acceder a los distintos elementos de la página, debes acceder al DOM (document object model), y el punto de entrada a éste es la propiedad WebBrowser.Document.

Esta propiedad es una interfaz que tienes que moldear de acuerdo a lo que requieras. Por ejemplo, la interfaz IHTMLDocument3 contiene el método getElementsByName que te devuelve la lista de todos los elementos que lleven un nombre dado. Si sólo hay un elemento con ese nombre, la lista contendrá un sólo elemento (el de índice 0).

Tal elemento debes averiguar si es del tipo deseado, lo cual logras preguntando a la interfaz si soporta la interfaz deseada, por ejemplo la de IHTMLInputElement. De ser así, podrias verificar si es del tipo adecuado (TEXT) y entonces tomar su propead value.

Te dejo un ejemplo, que carga la página de búsqueda avanzada de Google y lee el valor del campo Dominio que se llama as_sitesearch:

Código Delphi [-]
uses MSHTML;

procedure TForm1.WebBrowser1DocumentComplete(
  Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
  Document: IHTMLDocument3;
  Collection: IHTMLElementCollection;
  Element: IHTMLElement;
  InputElement: IHTMLInputElement;

begin
  Document := (WebBrowser1.Document as IHTMLDocument3);
  Collection := Document.getElementsByName('as_sitesearch');

  if (Collection.length >= 0) then
  begin
    Element := Collection.item(0, 0) as IHTMLElement;
    Element.QueryInterface(IHTMLInputElement, InputElement);

    if Assigned(InputElement) and (InputElement.type_ = 'text') then
      ShowMessage(InputElement.value);
  end;
end;

Si te fijas, el código está en el evento OnDocumentComplete, para asegurarte que ya está descargado todo el documento al momento de buscar el elemento.

// Saludos

kurono 20-01-2009 02:03:39

amigo roman el codigo funciona pero como saber cual es el nombre del valor de un campo

roman 20-01-2009 02:11:02

Bueno, se supone en este código, que uno sabe de antemano qué pagina vas a descargar. Entonces, bastaría que examines el código html de la página en cuestión para ver como están nombrados los campos. Si usas FireFox, tienes la extensión Web Developer que te permite saber de manera muy fácil, qué formularios y qué campos hay en una página dada.

// Saludos

kurono 20-01-2009 02:15:12

ok muchas gracias

StartKill 20-01-2009 18:37:56

Amigo "roman", muchas gracias:), me sirvió de mucho el codigo.

Your friend

Startkill
Lima-Perú

madiazg 24-01-2009 15:19:49

Hola,
gracias por la información. Con este código puedo obtener los datos contenidos en un campo tipo formulario.
EL problema que planteo es como consecuencia de obtener las coordenadas de la siguiente página:

guiarte.com

Si observan el código fuente de la página, la latitud y la longitud viene recogidos en las 'variables' point.lat() y point.Lng()

¿Cómo podría obtener en mi programa delphi dichos valores?

Saludos...
Miguel Angel
Imagen3D

jucabb 05-03-2010 17:38:06

Estoy tratando de hacer esto en tiempo real o loop para ver como varian los valores cada minuto, sin tener que presionar un boton para ver las lecturas de variables. Sin embargo, siempre me lee lo mismo.
Por favor, alguna sugerencia?
Gracias,
Juan C.


La franja horaria es GMT +2. Ahora son las 13:03:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi