Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido) Localizar campos dentro do Frame no Embedded/TWebBrowser
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
LuloNet
Olá pessoal.

Gostaria de localizar e informar dados para um campo dentro de um Frame numa pagina e depois cliclar no botão abaixo do mesmo.

O Campo será informado MMAAAA (Mês/Ano),
e no Botão Continuar será dado o clique.

Segue o exemplo do frame e html abaixo:

<html xmlsn='"http//www.w3.org/1999/xhtml">
<head>
<body style="">
<div style="display: nome;">
<div id="container">
<div id="logo"> ...
<div id="menu"> ...
<div id="areatrabalho">
<div id="pFrameEmpresa" class="pFrame">
<div id="pFramePA" class="pFrame">
<div class="pFrameTitulo">Informe o Período de Apuração (MMAAAA) </div>
<div class="pFrameConteudo">
<input class="pa" type="text"> OBS: Este é o campo que recebe os dados MMAAAA, como informo os mesmos?
</div>
<div class="pFrameButtom">
<a class="pButtom" href="#">Continuar </a> OBS: Este é o botão onde tenho que simular o clique.
</div>
</div>
</div>
<div id="caminho"> ...
</div>
</body>
</html>

Desde já agradeço pela ajuda e pelas dicas, URGENTE.

QUOTE
3.6 É proibida a abertura de tópicos com títulos como "Socorro", "Ajuda", "Urgente", etc, ou com títulos que não descrevam a dúvida, como "Uma dúvida simples", "Alguém pode me ajudar?", "Dúvida de Iniciante", etc. Tópicos assim serão editados sem aviso prévio.
Jhonas
Procure sempre pesquisar no forum antes de postar a sua duvida ....

http://scriptbrasil.com.br/forum/index.php...ghlite=embedded

abraço
LuloNet
Caro amigo Jhonas, fiz uma pesquisa pelo link como foi solicitado.

Testei o progrma abaixo:

procedure SetFieldValue(theForm: IHTMLFormElement;
const fieldName: string; const newValue: string;
const instance: integer=0);
var
field: IHTMLElement;
inputField: IHTMLInputElement;
selectField: IHTMLSelectElement;
textField: IHTMLTextAreaElement;
begin
field := theForm.Item(fieldName,instance) as IHTMLElement;
if Assigned(field) then
begin
if field.tagName = 'INPUT' then
begin
inputField := field as IHTMLInputElement;
if (inputField.type_ <> 'radio') and
(inputField.type_ <> 'checkbox')
then
inputField.value := newValue
else
inputField.checked := (newValue = 'checked');
end
else if field.tagName = 'SELECT' then
begin
selectField := field as IHTMLSelectElement;
selectField.value := newValue;
end
else if field.tagName = 'TEXTAREA' then
begin
textField := field as IHTMLTextAreaElement;
textField.value := newValue;
end;
end;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
document : IHTMLDocument2;
theForm : IHTMLFormElement;
begin
try
document := WebBrowser1.Document as IHTMLDocument2;
theForm := GetFormByNumber(document,0);
SetFieldValue(theForm,'pa', '032010'); //--- Onde pa é o campo e o 032010 o seu valor.
theForm.submit;
except
end;
end;

Não funcionou, o que deve estar errado neste código?
PS. Obrigado pela ajuda.

Jhonas
QUOTE
Não funcionou, o que deve estar errado neste código?



Voce deve mudar o código para funcionar com a pagina que estiver sendo mostrada no seu WebBrowser

abraço
LuloNet
Amigo Jhonas.

Gostaria de pedir para você se pudesse ne explicar melhor (com mais detalhes) como usa a rotina abaixo:

procedure SetFieldValue(theForm: IHTMLFormElement;
const fieldName: string; const newValue: string;
const instance: integer=0);
var
field: IHTMLElement;
inputField: IHTMLInputElement;
selectField: IHTMLSelectElement;
textField: IHTMLTextAreaElement;
begin
field := theForm.Item(fieldName,instance) as IHTMLElement; //---> Quando rodo da erro aqui <--- //
if Assigned(field) then
begin
if field.tagName = 'INPUT' then
begin
inputField := field as IHTMLInputElement;
if (inputField.type_ <> 'radio') and
(inputField.type_ <> 'checkbox')
then
inputField.value := newValue
else
inputField.checked := (newValue = 'checked');
end
else if field.tagName = 'SELECT' then
begin
selectField := field as IHTMLSelectElement;
selectField.value := newValue;
end
else if field.tagName = 'TEXTAREA' then
begin
textField := field as IHTMLTextAreaElement;
textField.value := newValue;
end;
end;
end;

para poder implementar no meu programa, desde já muito obrigado pela atenção e pelas dicas.

Abraço.
LuloNet
Obrigado pelas dicas amigo.

[Tópico RESOLVIDO]
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.