recuperar valor de componente em TWebbrowser

Delphi

30/10/2007

caros colegas, tenho uma rotina em meu sistema onde o mesmo recupera valores de componentes de um arvio html previamente gerado em um TWebbrowser, por exemplo:

var
 Doc: IHTMLDocument2;
 I: Integer;
 Element: OleVariant;
 Elements: IHTMLElementCollection;

begin
Doc := Wb.Document as IHTMLDocument2;
Elements := Doc.All;

for I := 0 to Elements.length - 1 do begin
Element := Elements.item(I, varEmpty);
if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´RADIO´) then
   begin
        if (Element.Checked = true) then
        begin
            ShowMessage(´RadioButton: ´ + Element.value);
         end;
   end;
end;
end;


a rotina acima pegaria o valor do RadioButton checado em um TWebbrowser. essa rotina funciona bem quando o elemento ja tem a propriedade value preenchida / definida no arquivo html

porém me defrontei com o seguinte problema: preciso recuperar o valor de um input do tipo texto no qual a propriedade value será preenchida em tempo de execução, ou seja, no arquivo html o input estaria assim:

<label><input type="TEXT" value="" name="txt" /></label>





entao o usuário entraria com o valor no input (dentro do TWebbrowser) e eu recuperaria esse valor.

tentei algo do tipo:

if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´TEXT´) then
begin
  if (Element.value <> ´´) then
  begin
    ShowMessage(´edit: ´ + Element.value);
  end;
end;


porém nao obtive exito... alguem poderia me dar uma sugestão de como proceder?

abraços a todos e obrigado pela atenção!


Mahdak

Mahdak

Curtidas 0

Respostas

Bdexterholland

Bdexterholland

30/10/2007

Eu nunca mexi com o IHTMLDocument2, não faço muita idéia de como trabalhar com ele, mas observando o código
if (UpperCase(Element.tagName) = ´INPUT´) and (UpperCase(Element.Type) = ´TEXT´) then
begin
  if (Element.value <> ´´) then
  begin
    ShowMessage(´edit: ´ + Element.value);
  end;
end; 


Me fez pensar que o delphi por algum motivo, pode estar não encontrando o objeto realmente, tem como você verificar se o objeto existe ou fazer algo assim:

if (UpperCase(Element.name) = ´TXT´) then
begin
    ShowMessage(´edit: ´ + Element.type);
end;


Só para saber se o delphi está encontrando ele...


GOSTEI 0
Mahdak

Mahdak

30/10/2007

brother, esqueci de postar a solução aqui... na verdade arotina que postei ali estava certa, o problema é que eu havia colocado ela no local errado, dae ela nao funcionava. só mudei ela de local e tudo funcionou como esperado. mesmo assim valeu pela atenção

um forte abraço!


GOSTEI 0
POSTAR