Entwickler-Ecke

Internet / Netzwerk - TWebbrowser: Item.Click direkt nach Navigate?


Muratxiv - So 21.01.07 13:58
Titel: TWebbrowser: Item.Click direkt nach Navigate?
Hallo,

Ich möchte nach dem Laden einer Seite einen Button auf dieser drücken. Es funktioniert aber nur, wenn ich den Button in der WebBrowser1DocumentComplete procedur "klicke". Ich frage mich nun, ob beides in einer Pocedur zu handhaben ist. Ich bin der Meinung, dass es nicht geht, da die Seite noch nicht geladen ist, wenn der Button gedrückt werden soll. Hier mal der nicht funktionierende Quellcode:

Delphi-Quelltext
1:
2:
3:
4:
...
Webbrowser1.Navigate(url);
WebBrowser1.OleObject.Document.All.Tags('A').Item(3).click;
...


Wäre schön, wenn ihr mir helfen könntet....


Mfg. Tim


azubi_20 - Mo 22.01.07 20:36
Titel: Re: TWebbrowser: Item.Click direkt nach Navigate?
user profile iconMuratxiv hat folgendes geschrieben:
Es funktioniert aber nur, wenn ich den Button in der WebBrowser1DocumentComplete procedur "klicke". Ich frage mich nun, ob beides in einer Pocedur zu handhaben ist. Ich bin der Meinung, dass es nicht geht, da die Seite noch nicht geladen ist, wenn der Button gedrückt werden soll. [...]

was soll man dazu noch sagen... du hast recht. :roll: Eine Begründung hast du auch abgegeben.


Muratxiv - Mo 22.01.07 20:54

ja, danke...^^

Aber ist es nicht möglich zu warten, bis das laden zuende ist?

Delphi-Quelltext
1:
2:
3:
Webbrowser1.Navigate(url);
while webbrowser1.progressbar.progress<>1 do ;
WebBrowser1.OleObject.Document.All.Tags('A').Item(3).click;
^^(ist nicht ganz ernst gemeint)
Mein Programm wird sonst sehr unübersichtlich und kompliziert...


M4EiB - Di 23.01.07 18:28

Vll in WebBrowser1DocumentComplete einen boolean auf True setzen, der vorher False war, und das ganze in einer Schleife abwarten? Ist nur blöd, falls das Document nie complete wird ;)


Robinator - Di 23.01.07 18:31


Delphi-Quelltext
1:
while Webbrowser1.Readystate <> READYSTATE_INTERACTIVE do Appliaction.Processmesages;                    


bin mir gerade nichtmehr ganz sicher ob READYSTATE_INTERACTIVE wirklich so heisst - in jedem fall heisst aber so ähnlich ;)

gruss, rob


Muratxiv - So 28.01.07 01:26

Problem gelöst! Danke für eure Hilfe(besonders an Robinator)!

Habe es jetzt so gemacht:

Delphi-Quelltext
1:
while Webbrowser1.Readystate <> READYSTATE_COMPLETE do Application.ProcessMessages;