Avatar billede sirius Nybegynder
17. september 2001 - 09:54 Der er 14 kommentarer og
1 løsning

twebbrowser

Hejsa

Kan man med TWebBrowser submitte en form som er på ens side eller trykke på en knap som sider på siden.. ?
Avatar billede ziron Nybegynder
17. september 2001 - 09:58 #1
den må jeg lige have igen???

/ZIRON
Avatar billede stoney Nybegynder
17. september 2001 - 12:03 #2
Drop en twebbrowser, en button, og en label på formen.

function FillForm(WebBrowser: TWebBrowser; fieldname:String; value:String) : Boolean;
var
  i,j:Integer;
  FormItem:Variant;
begin
  Result:=false;
  //no form on document
  If WebBrowser.OleObject.Document.all.tags(\'FORM\').length=0 then
  begin
    exit;
  end;
  //count forms on document
  for I:=0 to WebBrowser.OleObject.Document.forms.Length -1 do
  begin
    FormItem := WebBrowser.OleObject.Document.forms.Item(I);
    For j:= 0 to FormItem.Length-1 do
    begin
    try
      //when the fieldname is found, try to fill out
      if FormItem.Item(j).Name=fieldname then
      begin
        FormItem.Item(j).Value:=value;
        Result:=true;
      end;
    except
      exit;
    end;
    end;
  end;
end;




procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
if FillForm(WebBrowser1,\'q\',\'Dette felt er automatisk udfyldt\')=false then
  begin
    ShowMessage(\'Feltet findes ikke på formen.\');
  end;
end;

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
if ProgressMax = 0 then begin
    Label1.caption := \'\';
    Exit;
  end;
  try
    if (Progress <> -1) and (Progress <= ProgressMax) then
      Label1.caption := IntToStr(
        (Progress * 100) div ProgressMax) + \'% loaded...\'
    else
      Label1.caption := \'\';
  except
    on EDivByZero do Exit;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate(\'http://www.eksperten.dk/kategori/7\');

end;




Du vil herefter \"starte\" på eksperten.dk med søgefeltet udfyldt


Stoney
Avatar billede sirius Nybegynder
17. september 2001 - 13:58 #3
fedt nok.. kan man så også lave sådan så den selv trykker søg... altså så den submitter formen ?
Avatar billede sirius Nybegynder
19. september 2001 - 09:42 #4
hmm jeg tror stoney er faldet ned af stolen..
Avatar billede stoney Nybegynder
19. september 2001 - 12:08 #5
jeg har ikke glemt dig.
Jeg er ved at kigge på det, men jeg kan kun få det til at virke når en given webside bruger POST,
men de fleste bruger sider bruger GET


Stoney
Avatar billede sirius Nybegynder
19. september 2001 - 16:51 #6
hvis du kan lave et eksempel hvor siden bruger POST ville det være helt fint for det er også det jeg bruger..

/sirius
Avatar billede stoney Nybegynder
20. september 2001 - 01:37 #7
Jeg er lidt i tvivl om hvad du vil.
Er det din egen webside den skal submitte til eller en \"fremmed\" ?

Hvis det er din egen side kan du bare sende hele linket i strengen og selv trække oplysningerne ud
med request.querystring hvis du bruger ASP.

Nedenstående eksempel søger på Google.com ud fra
hvad du skriver i edit1.text

procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate(\'www.google.com/search?q=\' + edit1.Text);

end;

hvis det er fordi din bruger ikke må se der bliver
postet på webben (hvis du vil gemme data) kan du bare sætte twebbrowser.visible := false

Stoney
Avatar billede sirius Nybegynder
20. september 2001 - 21:03 #8
Det er ikke min egen side..

og den skal submitte siden man kan ikke bare skrive dem med i stien..

er det ikke muligt at få twebbrowser til at \"trykke\" på en knap i en form ?

/sirius
Avatar billede ziron Nybegynder
20. september 2001 - 21:29 #9
nico22 er vist hardcore til det sjov :-)

/ZIRON
Avatar billede sirius Nybegynder
21. september 2001 - 11:14 #10
nico22 ?
Avatar billede stoney Nybegynder
22. september 2001 - 11:20 #11
her er løsningen. Husk at tilføje mshtml i USES

Stoney
------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  TheForm: IHTMLFormElement;
begin
  //  f er navnet på formen
  TheForm := (WebBrowser1.Document as IHTMLDocument2).all.item(\'f\', 0)
as IHTMLFormElement;
  if Assigned(TheForm)
  then begin
  //  q er navnet på feltet
    (TheForm.item(\'q\', 0) as IHTMLInputElement).value := \'Delphi\';
    TheForm.submit;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate(\'http://www.google.com\');
end;
Avatar billede sirius Nybegynder
22. september 2001 - 13:09 #12
hvad hvis formen ikke har noget navn kan det så stadig lade sig gøre ?
Avatar billede stoney Nybegynder
22. september 2001 - 15:06 #13
Kan du ikke lige give mig den URL skal jeg kigge
på det.


Stoney
Avatar billede sirius Nybegynder
23. september 2001 - 16:51 #14
http://www.neopets.com/games/slots.phtml

så skulle den gerne selv finde ud af at spille...
Avatar billede loproc Praktikant
03. oktober 2001 - 01:14 #15
Stoney -> Det lader til at du har rimelig styr på TWebBrowser komponenten... Jeg kunne godt bruge din hjælp på www.eksperten.dk/spm/99941

På forhånd tak!
Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester