Einzelnen Beitrag anzeigen

Andi1982ka

Registriert seit: 22. Mär 2006
Ort: Karlsruhe
12 Beiträge
 
#1

Meherere Submits in einer Procedure mit TWebBrowser

  Alt 22. Mär 2006, 06:07
Hallo zusammen,

ich hatte zuerst recht lange gebraucht bis ich es endlich hin bekommen habe ein Formular das im TWebBrowser angezeigt wurde auszufüllen. Dann habe ich es sogar geschaft das ganze formular zu submitten. Nach dem Submit kommt man aber auf eine andere Seite auf der man ebenfalls noch ein Formular abschicken muss!

Wenn ich es so mache geht es wunderbar:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  Webform : variant ;
begin
  // erstes Formular abschicken
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('spear').value := Edit4.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('sword').value := Edit5.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('axe').value := Edit6.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('spy').value := Edit7.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('light').value := Edit8.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('heavy').value := Edit9.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('ram').value := Edit10.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('catapult').value := Edit11.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('snob').value := Edit12.Text;

//Submit des forumulars
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('attack').click;
end;

 
procedure TForm1.Button4Click(Sender: TObject);
begin
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item(0).Elements.item('submit').click;
end;
Hier muss ich zuerst Button3 anklicken und danach Button4. Ich hätte das aber gerne alles in einem button. Da dachte ich das geht einfach indem ich nach dem abschicken des ersten formulars auf den Browser warte und dann gleich den Submit das nächste abschicke. Aber dann bekomme ich einen Programmabbruch. Das ganze geht nur wenn ich es auf zwei buttons verteile.

So bricht ab:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
//Erstes Formular:
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('spear').value := Edit4.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('sword').value := Edit5.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('axe').value := Edit6.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('spy').value := Edit7.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('light').value := Edit8.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('heavy').value := Edit9.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('ram').value := Edit10.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('catapult').value := Edit11.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('snob').value := Edit12.Text;
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item('units').Elements.item('attack').click;

 
//Pause
    WaitBrowser(WebBrowser1);
//Zweites forumular:
    WebBrowser1.OleObject.Document.Frames.item('MAIN').Document.Forms.item(0).Elements.item('submit').click;
end;

 
.
.
.

 
procedure TForm1.WaitBrowser(eWebBrowser: TWebBrowser);
begin
  Repeat
    Sleep(50);
    Application.ProcessMessages;
  Until (eWebBrowser.ReadyState = READYSTATE_COMPLETE);
end;
Kann mir da jemand weiterhelfen???

Viele Grüße andi
  Mit Zitat antworten Zitat