GARANTIR DESCONTO

Fórum como dar enter no webbrowser #261485

10/12/2004

0

como dar enter no webbrowser

nas paginas da internet quando nos preenchemos augum formulario e damos enter ele faz a pesquisa ou cadastro automaticamente sem precisar clicar no botao para tal fim. so que essas paginas no webbrowser nao funciona com o enter temos que clicar no botao. sera que tem jeito de fazer com que a pagina no webbrowser funcione com o enter?


Flaviocont

Flaviocont

Responder

Posts

18/12/2004

Flaviocont

sobe


Responder

Gostei + 0

03/01/2005

Rodc

Flávio,
Você conseguiu resolver o sel problema? Também estou precisando.
Grato,

Rodrigo Cesar


Responder

Gostei + 0

03/01/2005

Massuda

Não tem como ´dar um enter´ no navegador... no caso de formulários em páginas da web, o modo de fazer um preenchimento automático seria usar um TIdHttp (por exemplo) e usar o método usado no formulário, usar TIdHttp.Post ou TIdHttp.Get para enviar os dados e obter a resposta do servidor.

Sei que a explicação é vaga, mas se você puder passar mais detalhes talvez seja possível explicar melhor.


Responder

Gostei + 0

04/01/2005

Flaviocont

massuda bom dia.

massuda dessa maneira q vc faz so preenche o formulario ou vc consegue dar o para ele dar a resposta do formulario?

se vc conseguiu uma maneira do formulario te da a resposta sem precissar dar enter no botao e poder me da uma dica vai ser muito util pra mim.

é que eu preencho os formularios e ate dou o click no botao automaticamente usando o webbrowser. so que tem uma pagina que eu nao consegui nem preencher nem dar o click no botao.

se vc poder me dar uma dica ou um exemplo com esse componente q vc usa vai me ajudar muito.


Responder

Gostei + 0

04/01/2005

Massuda

Não sei se era isso que você estava esperando, mas vai aí dois exemplos...

O primeiro exemplo mostra como simular o envio de dados de um web form que usa o método GET (os dados vão numa URL, como por exemplo, o site do Google):
type
  TMeuForm = class(TForm)
    // ...
    httpCliente: TIdHTTP;
    // ...
   function BuscaNoGoogle(PalavraChave: string): string

// ...

// Busca no Google pela PalavraChave.
// Retorna a página gerada pelo Google.

function TMeuForm.BuscaNoGoogle(PalavraChave: string): string
var
    Resposta: TStringStream;
begin
    Resposta := TStringStream.Create(´´);
    try
        httpCliente.Get(´http://www.google.com/search?q=´ + PalavraChave, Resposta);

        Result := Resposta.DataString;
    finally
        Resposta.Free;
    end;
end;


O segundo exemplo mostra como simular o envio de dados de um web form que usa o método POST (os dados vão nos cabeçalhos HTTP, como por exemplo, a página de pesquisa deste fórum):
type
  TMeuForm = class(TForm)
    // ...
    httpCliente: TIdHTTP;
    // ...
   function BuscaNoClubeDelphi(PalavraChave: string): string

// ...

// Busca no ClubeDelphi pela PalavraChave.
// Retorna a página gerada pelo ClubeDelphi.

function TMeuForm.BuscaNoClubeDelphi(PalavraChave: string): string
var
    Argumentos: TStringList;
begin
    Argumentos := TStringList.Create;
    try
        Argumentos.Add(´search_keywords=´ + PalavraChave);
        Argumentos.Add(´search_terms=all´);
        //Argumentos.Add(´search_author=´);

        Result := httpCliente.Post(´http://delphiforum.icft.com.br/forum/search.php?mode=results´, Argumentos);
    finally
        Argumentos.Free;
    end;
end;


Nos dois exemplos é retornada uma string que contem a página HTML recebida em resposta aos dados que enviamos.

O problema maior é determinar como enviar os dados... acho que a forma mais simples é dar uma olhada no código HTML da página e determinar quais dados o web form está capturando. Aliás, o jeito mais fácil de determinar qual o método de envio dos dados é dar uma olhada no código HTML da página.


Responder

Gostei + 0

04/01/2005

Flaviocont

massuda achei interesante a sua segunda funcao que usa o post eu acho que ela pode me ajudar no que eu precisso. mas eu nao consegui compilar, ela da esse erros

[Error] Unit1.pas(49): There is no overloaded version of ´Post´ that can be called with these arguments
[Fatal Error] Project1.dpr(5): Could not compile used unit ´Unit1.pas´

acho q eu coloquei aguma coisa fora do lugar eu coloquei assim

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP;

type

TForm1 = class(TForm)

Button1: TButton;


private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
httpCliente: TIdHTTP;

implementation

{$R *.dfm}


// function BuscaNoClubeDelphi(PalavraChave: string): string

// ...

// Busca no ClubeDelphi pela PalavraChave.
// Retorna a página gerada pelo ClubeDelphi.

function BuscaNoClubeDelphi(PalavraChave: string): string;
var
Argumentos: TStringList;
begin
Argumentos := TStringList.Create;
try
Argumentos.Add(´search_keywords=´ + PalavraChave);
Argumentos.Add(´search_terms=all´);
//Argumentos.Add(´search_author=´);

Result:=httpCliente.Post(´http://delphiforum.icft.com.br/forum/search.php?mode=results´, Argumentos);



finally

Argumentos.Free;
end;
end;



end.


Responder

Gostei + 0

04/01/2005

Massuda

[...] mas eu nao consegui compilar, ela da esse erros [Error] Unit1.pas(49): There is no overloaded version of ´Post´ that can be called with these arguments [Fatal Error] Project1.dpr(5): Could not compile used unit ´Unit1.pas´
Acho que é diferença de versão do Indy; o Indy que uso é uma versão recente (9.0.14)... qual a sua versão?

acho q eu coloquei aguma coisa fora do lugar eu coloquei assim [...]
Eu coloquei um TIdHTTP (que renomeei para httpCliente), um TButton e um TMemo dentro do form, fiz BuscaNoClubeDelphi ser uma função do form e no tratador do OnClick do botão usei BuscaNoClubeDelphi para preencher o TMemo.

Ficou assim:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    httpCliente: TIdHTTP;
    procedure Button1Click(Sender: TObject);
  private
    function BuscaNoClubeDelphi(PalavraChave: string): string
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Busca no ClubeDelphi pela PalavraChave.
// Retorna a página gerada pelo ClubeDelphi.

function TForm1.BuscaNoClubeDelphi(PalavraChave: string): string;
var
  Argumentos: TStringList;
begin
  Argumentos := TStringList.Create;
  try
    Argumentos.Add(´search_keywords=´ + PalavraChave);
    Argumentos.Add(´search_terms=all´);
    //Argumentos.Add(´search_author=´);

    Result:=httpCliente.Post(´http://delphiforum.icft.com.br/forum/search.php?mode=results´, Argumentos);

  finally
    Argumentos.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add(BuscaNoClubeDelphi(´Teste´));
end;

end.



Responder

Gostei + 0

04/01/2005

Flaviocont

massuda a versao do meu e 8.0.25

onde vc conseguiu essa versao nova? tem como conseguir?


Responder

Gostei + 0

04/01/2005

Massuda

onde vc conseguiu essa versao nova? tem como conseguir?
Você pode baixar a versão mais recente do Indy no site [url=http://www.indyproject.org/]Indy Project[/url] (mais epecificamente, neste [url=http://www.indyproject.org/download/Files/Indy9.iwp]link[/url]). É recomendável usar a versão 9.0.18.

Antes de instalar essa versão, você vai ter que desinstalar a versão antiga.


Responder

Gostei + 0

04/01/2005

Flaviocont

massuda me desculpa por esta ti incomodando tanto.

eu baixei o versao nova

mas eu nao tenho costume de instalar componentes e estou perdido aqui pois nao sei desinstalar a versao antiga. teria como vc me ajudar? :oops:

a versao nova eu acho que consigo instalar mas desinstalar nao sei como


Responder

Gostei + 0

04/01/2005

Massuda

mas eu nao tenho costume de instalar componentes e estou perdido aqui pois nao sei desinstalar a versao antiga.
Na página de onde você baixou o Indy (neste [url=http://www.indyproject.org/download/Files/Indy9.iwp]link[/url]) tem as instruções sobre como remover o Indy8 na seção [b:18a2f96c80]Delphi 6 & 7 Specific Notes[/b:18a2f96c80].


Responder

Gostei + 0

05/01/2005

Nerdex

Isto também poderá ajudar...
Pressionando um certo button de um TWebbrowser mesmo existindo vários diferentes:

procedure TForm1.Button2Click(Sender: TObject);
var 
ovElements: OleVariant;
i: Integer; 
begin 
ovElements := ie.OleObject.Document.forms.item(0).elements;
for i := 0 to ovElements.Length -1 do
begin
if (ovElements.item(i).tagName = ´INPUT´)
and (ovElements.item(i).type = ´submit´)
and (ovElements.item(i).Value = ´Google seach´) then
begin
ovElements.item(i).Click;
break;
end;
end;
end;



Responder

Gostei + 0

05/01/2005

Flaviocont

Nerdex boa noita. achei interesante sua rotina mas tem como essa rotina funcionar nesta pagina http://www.sintegra.sefaz.pe.gov.br

pois eu ja tentei com os trez butoes que tem nela e nao funcionou nao sei se fiz auguma coisa errada.


Responder

Gostei + 0

06/01/2005

Nerdex

Dá um conferida no cód. fonte da pág. de repente tu pega os dados corretos relativo aos botões... Acredito que deves utilizar o parâmetro value para este item do OLEVariant...

Sem mais no momento... agradeço a compreenção de todos...


Responder

Gostei + 0

06/01/2005

Nerdex

Ou me lança em OFF por Msg Particular um exemplo contendo 3 valores para eu ativar isto para você...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar