Fórum como dar enter no webbrowser #261485
10/12/2004
0
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
Curtir tópico
+ 0Posts
18/12/2004
Flaviocont
Gostei + 0
03/01/2005
Rodc
Você conseguiu resolver o sel problema? Também estou precisando.
Grato,
Rodrigo Cesar
Gostei + 0
03/01/2005
Massuda
Sei que a explicação é vaga, mas se você puder passar mais detalhes talvez seja possível explicar melhor.
Gostei + 0
04/01/2005
Flaviocont
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.
Gostei + 0
04/01/2005
Massuda
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.
Gostei + 0
04/01/2005
Flaviocont
[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.
Gostei + 0
04/01/2005
Massuda
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.Gostei + 0
04/01/2005
Flaviocont
onde vc conseguiu essa versao nova? tem como conseguir?
Gostei + 0
04/01/2005
Massuda
Antes de instalar essa versão, você vai ter que desinstalar a versão antiga.
Gostei + 0
04/01/2005
Flaviocont
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
Gostei + 0
04/01/2005
Massuda
Gostei + 0
05/01/2005
Nerdex
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;
Gostei + 0
05/01/2005
Flaviocont
pois eu ja tentei com os trez butoes que tem nela e nao funcionou nao sei se fiz auguma coisa errada.
Gostei + 0
06/01/2005
Nerdex
Sem mais no momento... agradeço a compreenção de todos...
Gostei + 0
06/01/2005
Nerdex
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)